Linux2012. 8. 31. 15:38

RPM 패키지 설치

RPM을 이용하여 rdesktop 패키지를 설치해 보자.
- rdesktop은 윈도우 터미널 서비스에 접속하기 위한 원격 데스크탑 프로토콜 클라이언트 프로그램이다.


# cd Desktop
- 다운 받은 폴더로 이동한다. 기본적으로 X-Window 바탕화면에 저장되므로 /root/Desktop 폴더로 이동한다.

# ls  ---> rdesktop 패키지 파일 확인
-rw-r--r-- 1 root root 119721 11월 14 10:09 rdesktop-1.4.1-4.i386.rpm

# rpm -q rdesktop 
rdesktop 패키지가 설치되어 있지 않습니다 
# rpm -qa | grep rdesktop
- 패키지가 설치되어 있는지 확인한다.

# rpm -Uvh rdesktop-1.4.1-4.i386.rpm 
준비 중...               ########################################### [100%]
   1:rdesktop               ########################################### [100%]
- rpm의 업그레이드 설치 모드를 이용하여 설치한다.

# rpm -q rdesktop
rdesktop-1.4.1-4
# rpm -qi rdesktop 
Name        : rdesktop                     Relocations: (not relocatable)
Version     : 1.4.1                             Vendor: CentOS
Release     : 4                             Build Date:
Install Date:       Build Host: builder1.centos.org
Group       : User Interface/Desktops       Source RPM: rdesktop-1.4.1-4.src.rpm
Size        : 279054                           License: GPL
Signature   : DSA/SHA1, 2007년 04월 04일 (수) 오전 09시 27분 19초, Key ID a8a447dce8562897
URL         : http://www.rdesktop.org/
Summary     : Windows 터미널 서버를 위한 원격 데스크트탑에 사용되는 X 클라이언트
Description :
rdesktop는 Windows NT 터미널 서버와 Windows 2000 & 2003 터미널 서비스에
사용되는 공개 소스 클라이언트로서 대화식 RDP (원격 데스크탑 프로토콜)을 사용하여
사용자의 NT 데스크탑을 보여줍니다. Citrix ICA와는 달리 어떠한 서버 확장도
필요로 하지 않습니다.
- 설치된 rpm패키지의 자세한 정보를 확인할 수 있다.

#rdesktop 10.10.33.74
-윈도우에서 원격데스크탑 설정을 하고 방화벽 설정을 해제하고 테스트 한다.

------------------------------------------------------------------------------------------------------------------------

RPM 패키지 삭제 및 재설치

Sendmail 프로그램을 삭제 후 재설치 해 보자.


Sendmail 삭제

# rpm -e sendmail
오류: Failed dependencies:
        /usr/sbin/sendmail is needed by (installed) redhat-lsb-3.1-12.3.EL.el5.centos.i386
        smtpdaemon is needed by (installed) mutt-1.4.2.2-3.0.2.el5.i386
        smtpdaemon is needed by (installed) fetchmail-6.3.6-1.1.el5.i386
        smtpdaemon is needed by (installed) mdadm-2.6.4-1.el5.i386
        sendmail = 8.13.8-2.el5 is needed by (installed) sendmail-cf-8.13.8-2.el5.i386
- sendmail 프로그램을 삭제하려고 하면 의존성 실패와 함께 삭제하게 위해 필요한 패키지들을 알려준다.

# rpm -e redhat-lsb
#rpm -e mutt
# rpm -e fetchmail
# rpm -e sendmail-cf
# rpm -e mdadm
- 의존성 검사 결과에 나타난 패키지들을 삭제한다.

# rpm -e sendmail
경고: /var/log/mail/statistics(이)가 /var/log/mail/statistics.rpmsave(으)로 저장되었습니다
# rpm -q sendmail
sendmail 패키지가 설치되어 있지 않습니다.
- 의존성 검사 결과에 나타난 패키지들을 삭제하자 sendmail이 지워진 것을 확인할 수 있다.

Sendmail 재설치

# cd Desktop

# ls
-rw-r--r-- 1 root root 646709 11월 14 10:24 sendmail-8.13.8-2.el5.i386.rpm
-rw-r--r-- 1 root root 318671 11월 14 10:25 sendmail-cf-8.13.8-2.el5.i386.rpm

# rpm -Uvh sendmail-8.13.8-2.el5.i386.rpm
준비 중...               ########################################### [100%]
   1:sendmail               ########################################### [100%]

# rpm -q sendmail
sendmail-8.13.8-2.el5
-rpm의 업그레이드 설치 모드를 이용하여 설치 후 설치된 패키지를 확인한다.
#

# ls
-rw-r--r-- 1 root root 646709 11월 14 10:24 sendmail-8.13.8-2.el5.i386.rpm
-rw-r--r-- 1 root root 318671 11월 14 10:25 sendmail-cf-8.13.8-2.el5.i386.rpm

# rpm -Uvh sendmail-cf-8.13.8-2.el5.i386.rpm
준비 중...               ########################################### [100%]
   1:sendmail-cf            ########################################### [100%]

# rpm -q sendmail-cf
sendmail-cf-8.13.8-2.el5


------------------------------------------------------------------------------------------------------------------------

Vsftpd 소스 RPM 패키지를 이용한 설치

소스 RPM 패키지를 이용하여 vsftpd 패키지를 설치해 보자.
- src.rpm 이라고 적힌 파일이 소스파일 형태의 rpm패키지 이다.


# cd Desktop

# ls
-rw-r--r-- 1 root root 191201 11월 14 10:56 vsftpd-2.0.5-12.el5.src.rpm

# rpm -Uvh vsftpd-2.0.5-12.el5.src.rpm
- 설치는 일반 rpm 패키지와 같지만 실제로는 설치되는 것이 아니라 컴파일이 가능한 spec파일이 생성된다.

# cd /usr/src/redhat/SPECS
- 제대로 spec파일이 생성되었는지 확인한다.

# ls
-rw-r--r-- 1 root root 13889 12월 13  2007 vsftpd.spec
# vi vsftpd.spec
- spec 파일을 확인한다.

# rpmbuild -bb vsftpd.spec
- spec 파일을 컴파일한다.

# cd /usr/src/redhat/RPMS

# ls
drwxr-xr-x 2 root root 4096  5월 25 03:44 athlon
drwxr-xr-x 2 root root 4096 11월 14 10:59 i386
drwxr-xr-x 2 root root 4096  5월 25 03:44 i486
drwxr-xr-x 2 root root 4096  5월 25 03:44 i586
drwxr-xr-x 2 root root 4096  5월 25 03:44 i686
drwxr-xr-x 2 root root 4096  5월 25 03:44 noarch
# cd i386
- 자신의 시스템 아키텍쳐에 맞는 폴더에 들어간다. 그곳에 자신의 시스템에 맞는 rpm 패키지 파일이 생성되어 있다.

# ls
-rw-r--r-- 1 root root 142183 11월 14 10:59 vsftpd-2.0.5-12.i386.rpm
# rpm -Uvh vsftpd-2.0.5-12.i386.rpm
준비 중...               ########################################### [100%]
   1:vsftpd                 ########################################### [100%]
# rpm -qi vsftpd
Name        : vsftpd                       Relocations: (not relocatable)
Version     : 2.0.5                             Vendor: (none)
Release     : 12                            Build Date:
Install Date:       Build Host: server3
Group       : System Environment/Daemons    Source RPM: vsftpd-2.0.5-12.src.rpm
Size        : 289673                           License: GPL
Signature   : (none)
URL         : http://vsftpd.beasts.org/
Summary     : vsftpd - 매우 안전한 Ftp 데몬
Description :
vsftpd는 매우 안전한 FPT 데몬입니다. 이것은 완전히 처음부터 작성되었습니다.

- 자신이 만든 rpm 패키지를 이용해 vsftpd 프로그램을 설치한다.

# rpm -q sendmail-cf
vsftpd-2.0.5-12
- 제대로 설치되었는지 확인한다.

------------------------------------------------------------------------------------------------------------------------

만일 /usr/src/redhat/ 폴더가 없다면

#rpm -qf /usr/src/redhat  또는
#whereis rpmbuild 또는
#rpm -qf /usr/bin/rpmbuild
로 의존성을 확인해서 필요한 파일을 설치해야 한다.

버전이 낮은 버전을 설치할 경우에는 소스.rpm 파일을 다운 받아서 다시 리빌딩후 설치 사용하면 된다.

 

출처: http://bban2.tistory.com/60


------------------------------------------------------------------------------------------------------------------------

krusader 설치

 

# rpm -Uvh krusader-2.3.0-0.3.beta1.el6.R.i686.rpm

설치 시에 아래와 같은 오류가 발생하였다면 해당 라이브러리가 포함된 kdebase-libs rpm package를 설치한 후에 재설치한다.

...

error: Failed dependencies:
 libkonq.so.5 is needed by ...

...

# yum install kdebase-libs

Provides

  • kdebase-libs = 6:4.3.4-5.el6
  • kdebase-libs(x86-32) = 6:4.3.4-5.el6
  • libdolphinprivate.so.4
  • libkonq.so.5
  • libkonqsidebarplugin.so.4
  • libkonquerorprivate.so.4

Files

  • /usr/lib/libdolphinprivate.so.4
  • /usr/lib/libdolphinprivate.so.4.3.0
  • /usr/lib/libkonq.so.5
  • /usr/lib/libkonq.so.5.3.0
  • /usr/lib/libkonqsidebarplugin.so.4
  • /usr/lib/libkonqsidebarplugin.so.4.3.0
  • /usr/lib/libkonquerorprivate.so.4
  • /usr/lib/libkonquerorprivate.so.4.3.0

# yum groupinstall 'KDE Desktop'

KDE Desktop을 설치하지 않으면, 인터페이스 모양이 부드럽지도 않고,

/usr/bin/kdesu가 존재하지 않아서, Can't start root mode krusader...라고 나타나면서 Root Mode로도 실행할 수 없게 된다.

설치여부는 아래의 명령을 통해 확인할 수 있다.

# yum grouplist

 

Posted by iWithJoy
Linux2012. 8. 31. 09:49

★운영체제의 로딩 과정

 -컴퓨터가 전원을 공급한다.

 -부트 로더가 하드디스크의 첫번째 섹터에 해당하는 MBR에 있는 부팅 관련 프로그램을 실행한다.

 -부팅관련프로그램은 MBR의 정보를 바탕으로 운영체제의 부트섹터로 제어권을 넘긴다.

 -부트 섹터는 운영체제를 메모리로 로드시키기 위해 부트 프로그램을 실행한다.

 

※MBR(Master Boot Record) 의 정보

  >파티션의 시작과 끝을 나타내는 주소 : 파티션의 크기와 위치 정보

  >부팅 가능한 파티션인지에 관한 정보

  >파티션 타입 : 두자리수 ID로 표현하며, 파티션의 용도를 파악.

 

★리눅스의 부팅과정

-LILO(Linux Loader) 리눅스 로더, 리로를 사용하고 있다.

  > 커널을 메모리에 적재

  >커널 이미지의 위치를 알고 있어 스스로 커널 이미지를 찾을 수 있다.

 

-커널 부팅

  >메모리에 로드된 커널을 부팅

  >커널 자신에게 포함되어 있는 기능들을 점검하고 설치되어 있는 하드웨어를 점검한다.

  >압축된 커널 이미지는 메모리에 적재된 다음 스스로 푼다.

  >root파티션을 마운트 하며, 대부분 Read-Only로 마운트 한다.

  >디스크 검사를 수행하고 검사를 마치면 Read-Write모드로 Remount한다.

  >/sbin/init을 수행한다.
 

-init

  >커널이 제일 먼저 실행시키는 프로세스이며 PID 1번을 갖는다.

    ※PID 프로세서 아이디

       UID 유저 아이디

       GID 그룹아이디

  >커널은 모든 제어권을 init에게 넘기고 프로그램이 특정 기능을 요청하면 처리한다.

 

  >init Script 작업 진행

init Script 관련 파일 및 해당 위치  || 파일 설명

/etc/inittab                                   init의 설정파일

/etc/rc.d/rc.sysinit                       init Script에서 제일 먼저 실행되는 파일

/etc/rc.d/rc.local                          init Script에서 제일 마지막에 실행되는 파일

/etc/rc.d/init.d/*                          데몬을 실행시키기 위한 스크립트들

 

/etc/rc.d/rc[0-6].d/*                    각 런레벨(Runlevel)에 정의 된 데몬들을 실행시키기 위한 파일

/etc/rc.d/rc                                  각 런레벨에 해당되는 스크립트를 실행 시키는 스크립트

/var/lock/subsys/*                       현재 실행되고 있는 데몬들의 Lock 파일

/var/run/*.pid                               현재 실행되고 있는 데몬들의 PID가 적힌 파일

 

 

★ init의 설정을 변경하여 xwindow부팅 모드에서  콘솔 모드 부팅으로 바꾸기

 

-VMware Workstation 으로 Red Hat Linux9를 실행시킨다.

  리눅스가 start 된다.

 

사용자 삽입 이미지

 

-Xwindow 모드로 시작되게 되어 있다.

ID : root

Passward : 123456


 

사용자 삽입 이미지

 

 

-새로운 터미널을 한개 연다음 ,vi /etc/inittab

 inittab파일을 열어준다. 다음은 init파일의 내용을 일부 수정한다

  >Default runlevel, The runlevels used by RHS are: 부분을 살펴보자

    런레벨에 대한 설정이 나와있고.

 

    아랫부분에                          id:5:initdefault:            라는 부분이 있다.  이 부분을

                                             id:3:initdefault:            라고 고쳐주자.


 

사용자 삽입 이미지

 

- 고친 다음reboot라고 명령해 주면 , 다음번 부팅 부터는 콘솔 모드로 부팅된다.

  아래에 설명이 다시 한번 있을것이다.

 

※ 간단하게startx라고 치면 x윈도우 화면으로 들어갈수 있다.

    콘솔모드로 되돌아가는것은Ctrl + Alt + backspase

 


★init과 runlevel

 -가정먼저 init은/etc/inittab설정 파일을 읽음

 -Runlevel의 종류

 

Runlevel  |          설                           명

    0          시스템 종료

 

    1          싱글 유저(Single User)부트 : LILO프롬프트에서 linux single이라고 입력하면 런레벨 1에서 리눅스가 시작된다.

                이 경우 디폴트인 root로 로그인되며, 대다수의 중요한 데몬들은 실행되지 않게 설정되어 있다.

 

    2          NFS를 지원하지 않는 다중 사용자 모드

 

    3          모든 네트워크 기능을 지원하는 다중 사용자 모드

 

    4          특별한 의미가 정해지지 않았으며 나름대로 정의해서 쓸 수 있는 런레벨이다.

                필요에 따라서 실행시키기 원하는 데몬이나 서비스를 /etc/rc.d/rc4.d 디렉토리 밑에 설정하여 각자의 특성을 갖는

                고유의 런레벨을 정의 할 수 있다.

 

    5          X-window 모드에서의 로그인

 

    6          시스템의 재부팅

  

★아래는 콘솔 모드의 런레벨 rc3과 시스템 재부팅의 rc6

사용자 삽입 이미지

사용자 삽입 이미지

 

 

★시스템의 shutdown 과정

 -init에 의하여 runlevel 0이 실행되고 커널이 동작을 멈추게 됨

 

 -Runlevel 0의 두가지 동작

  >실행 중인 모든 프로세스를 죽이게 됨

  >작업하던 내용을 종료시킬 수 있도록 TERM, QUIT, KILL 순서로 시그널을 보냄

 

-현재 작업중인 것을 모두 저장

-모든 프로세스가 종료되었으면 마운트 된 디스크들을 언마운트

-만약 시행중인 프로세스가 있으면 디스크는 언마운트 되지 않는다.

 

-리눅스 시스템을 종료하는 명령어 shtdown 그자체가 명령어로, 이걸 사용하면 예약 종료도 가능하다

 shutdown -h now        지금 바로 종료

 shutdown -h 1             1시간 뒤에 자동으로 꺼지게 된다.

 

 

 

★시스템의 시작

-Root 계정

  >시스템 관리자에게 부여되는 모든 권한을 가질 수 있다.

  >Super User라고 한다.

  >시스템 관리 및 사용자 추가 및 삭제, 시스템 내의 모든 작업에 관한 제어 권한

  >평소 일반 사용자 계정으로 사용하는 것이 바람직하다.

  >프롬프트의 모양이 #

 

-일반 사용자 계정

  >Root가 부여해준 권한으로 시스템을 사용

  >프롬프트의 모양이 $

  >일반적으로 /home 안에 자신의 계정에 따른 디렉토리를 부여받는다.

  

 

★시스템의 종료

-halt

  >아직 정해지지 않은 디스크의 운영상태를 완성

  >/var/log/wtmp에 로그인과 로그아웃에 관한 내용을 저장하고 안전하게 종료

  >Shutdown -h now와 같은 명령이다.

 

  # /sbin/halt

 

-Ctrl + Alt + Del

  >/etc/inittab 파일 가운데

 

 ca::ctrlaltdel:/sbin/shutdown -t3 -r now

 

  >위의 항목을 추가하면 재부팅을 시킬 수 있다.

 

-shutdown

  >멀티유저를 위한 특성에 맞도록 시스템 종료에 대처할 수 있는 시간적 여유와 메시지 전달 기능을 지원

  >root 사용자만 수행 가능

 

# /sbin/shutdown [-krhfc] [-t sec] time [경고 메시지]

 

옵션                     옵 션    내 용

-t sec               다른 런레벨로 바뀌기 전에 경고를 내보내는 프로세스와 kill시그널 사이의 기다리는 시간(단위/초)

-k                    시스템에 접속된 모든 사용자들에게 경고 메시지만 전달

-r                     셧다운 후 재부팅

-h                    셧다운 후 시스템 정지

-f                     재부팅 과정에서 fsck를 실행하지 않음

-c                    실행중인 셧다운 취소

 

-init

  ># init 0  (시스템 종료)

  ># init 6  (시스템 재 부팅)

 

-X 윈도우 모드에서 시스템 종료

  >일반적으로 로그아웃 메뉴 항목이나 로그아웃 버튼을 이용하여 시스템을 종료

 

-접속종료

  >시스템 사용후 더 이상 사용하지 않고 시스템을 빠져나오는것

  >logout 또는 exit 명령 또는 Ctrl + D 키를 동시에 누름으로써 실행
 

 

★시스템 부팅시 뜨는 환경 설정 "issue"와 issue의 내용에 따른 부팅 모습

사용자 삽입 이미지


사용자 삽입 이미지
 
 
 
 
 
★리눅스 명령어의 특징
 
-대수문자의 구분
 
-여러 명령의 동시 수행 가능
 
-파일 사용의 권한 부여
 
-내부 명령과 외부 명령
  >대부분의 명령들이 따로 파일 형태로 존재
  >파일 명 뒤에 특별한 확장자가 없음
 
-명령어 사용형식
  ># 명령어 [옵션] [인수]와 같은 형식으로 사용
  >다양한 옵션을 지원
 
Posted by iWithJoy
Linux/CentOS2012. 8. 31. 09:38

CentOS 5.5 에는 기본적으로 VNC Server가 설치되어 있어 환경설정과 서비스 등록만으로 VNC를 사용할 수 있다.

만약, 설치되지 않은 경우, 아래와 같이 설치한다.

 

일단, CentOS가 설치된 서버에 GUI가 설치되어 있어야 한다.

만약, 설치되어 있지 않다면 다음과 같이 명령하여 설치한다.

yum groupinstall "X Window System" "KDE Desktop"

 

VNC 소프트웨어를 설치한다.

yum install tigervnc-server



1. 환경

- CentOS 5.5  : 설치됨
- VNC Viewer : http://www.uvnc.com/download/ 에서 다운로드



2. 설정

# vi /etc/sysconfig/vncservers



3. vncservers 내용 수정

# The VNCSERVERS variable is a list of display:user pairs.

#

# Uncomment the lines below to start a VNC server on display :2

# as my 'myusername' (adjust this to your own).  You will also

# need to set a VNC password; run 'man vncpasswd' to see how

# to do that.

#

# DO NOT RUN THIS SERVICE if your local area network is

# untrusted!  For a secure way of using VNC, see

# <URL:http://www.uk.research.att.com/archive/vnc/sshvnc.html>.


# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.


# Use "-nohttpd" to prevent web-based VNC clients connecting.


# Use "-localhost" to prevent remote VNC clients connecting except when

# doing so through a secure tunnel.  See the "-via" option in the

# `man vncviewer' manual page.


# VNCSERVERS="2:myusername"

# VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost"


VNCSERVERS="1:root"

VNCSERVERARGS[1]="-geometry 12800x800"

만약, root가 아닌 사용자ID로 사용을 하고자 하는 경우,

root를 사용자ID로 수정 후, 저장하고,

아래의 암호설정 시에도 su상태가 아닌 사용자ID 상태에서 설정해야 한다.

4. VNC 암호 설정

# vncpasswd
Password:
Verify:



5. Port 확인 및 방화벽 오픈

# netstat -antp
 

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name

tcp        0      0 0.0.0.0:5801                0.0.0.0:*                   LISTEN      25974/Xvnc

tcp        0      0 0.0.0.0:5901                0.0.0.0:*                   LISTEN      25974/Xvnc

tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2629/portmap

tcp        0      0 0.0.0.0:6001                0.0.0.0:*                   LISTEN      25974/Xvnc



# vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT
  (추가)



5-1. iptable restart

# /etc/rc.d/init.d/iptables restart



6. VNC Server 시작

# service vncserver start


 
7. 서버 부팅시 자동 실행 service로 등록

# chkconfig vncserver on


  
8. 윈도우에서 그래픽모드로 보기 위한 설정

# vi /root/.vnc/xstartup



#!/bin/sh


wing two lines for normal desktop:

# unset SESSION_MANAGER (# 제거)

# exec /etc/X11/xinit/xinitrc (# 제거)


[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

xsetroot -solid grey

vncconfig -iconic &

xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

twm &


# Uncomment the following two lines for normal desktop:

unset SESSION_MANAGER

exec /etc/X11/xinit/xinitrc


[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

xsetroot -solid grey

vncconfig -iconic &

xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

twm &





9. VNC Viewer로 접속 확인 



10. 접속화면





11. 참고

http://jonnychoe.egloos.com/5472045

Posted by iWithJoy
Linux/CentOS2012. 6. 4. 09:26

일단 웹사이트의 기본원리에 대해 알 필요가 있다.

 

웹사이트는 익스플로러에 도메인을 치면 DNS(domain name server)에서 해당

 

도메인의 서버에 연결해주는 구조다.

 

인터넷익스플로러->도메인입력-> 해당 도메인에 설정된 DNS서버에 서버ip 요청->

해당 서버ip로 웹사이트 접속

 

 

서버에 세팅해야될건 간단히 3가지다.

 

네트워크, 아파치, DNS설정

 

 

1. 네트워크설정

루트로 vi편집기를 이용해 네트워크파일을 연다.

vi /etc/sysconfig/network

 

 

#네트워크사용여부

NETWORKING=yes

 

#호스트명, 아파치 세팅에 servername과같지않으면 문제가 발생할수 있다.
HOSTNAME=localhost

#게이트웨이주소

GATEWAY=203.241.205.254

#첫번째 랜카드로 설정

GATEWAYDEV=eth0

 

왠만한건 설정되있어서 게이트웨이만 설정하면된다.

 

/etc/sysconfig/network-scripts/ifcfg-eth0

IPADDR=61.2.44.15

NETMASK=255.255.255.0

 

아래 파일에 자동 생성 및 설정된다.

/etc/sysconfig/network-scripts/ifcfg-Auto_eth0

/etc/sysconfig/network-scripts/ifcfg-lo

 

필수값만 설정을 바꿔주면 된다.

 

네트워크 설정이 끝나면 네트워크를 리스타트한다.

/etc/init.d/network restart

 

 

 

네트워크 설정이 끝났다. 이제 DNS를 설정한다.

 

DNS설정은 3가지 방법이있다.

1. hosts파일에 ip와 도메인을 입력해서 자체적으로 처리하는방법

2. 외부에있는 DNS서버에서 조회하는방법

3. 자체적으로 DNS를 구현해서 조회하는방법

 

 

1번방법은 서버 /etc/hosts 파일에 ip와 도메인을 적어 DNS에서 서버ip를 조회하지 않더라도

해당 도메인을 접속하면 hosts파일에 기록된 도메인의 ip를 알려준다.

웹사이트가 추가될때마다 hosts에 추가해야되기때문에 번거롭다. 이 방법은 로컬에서

테스트할때나 사용하지 상용서비스에서는 잘 사용하지 않는다.

 

2번방법은 외부에 DNS서버가 있어서 해당 DNS서버에서 ip를 조회해온다.

상용서비스에서 많이 사용하는 방법이며 보통 대기업에서는 자체 DNS서버를 가지고있다.

/etc/resolv.conf 파일에 nameserver 부분에 해당 DNS서버 ip를 기재한다.

수정이 완료되면 nslookup 명령어를 이용해서 도메인을 입력 후 해당 DNS서버에서 도메인 ip를

제대로 조회하는지 확인한다.(해당 도메인의 address가 해당 서버로 되있는지 확인) 조회가 안되는건 DNS서버에 해당 도메인이 설정되지 않은것이다. 만약 address가 해당 서버와 다르면 dns변경을 요청해야한다.


3번방법은 1번과 다를게 없으며 자체서버에 DNS서버를 구현해야되기때문에 번거롭다.

다른 서버에서도 해당 서버에서 DNS조회해오면 모르겠지만 여기서는 생략하겠음.

 

 

웹사이트의 DNS조회순서는 hosts파일을 먼저 보고, 그다음 DNS설정으로 조회한다.

hosts에 먼저 조회하기때문에 같은 도메인을 세팅해놨다면 dns서버에서 가져올려고 했는데 hosts에 세팅된 도메인 ip로 접근할수도 있으므로 헷갈리지 않게 주의한다.(순서를 변경하는 방법도있으나 잘쓰이지 않으므로 여기서는 생략)

 

 

이제 아파치세팅만 남았다.

 

아파치에서는 버추얼 호스트만 잘 설정해주면된다.

아파치의 버추얼 호스트는 2가지 방식이 있다.

 

1. ip-based 버추얼호스트

<VirtualHost 210.22.255.1> 이런식으로 IP로 구분한다.

웹사이트가 1개라면 모르겠지만 여러개일경우 name-based 버추얼 호스트로 DNS조회하는 방식으로 하려면 사용하지 못한다.

 

2. name-based 버추얼 호스트

<VirtualHost www.aaa.com> 이런식으로 도메인으로 구분한다.

해당 설정된 도메인을 hosts와 DNS로 ip를 조회한다. hosts와 DNS에 도메인이 설정되있지 않다면

아파치 시작시 에러가 발생하므로 주의한다.

 

 

vi /usr/local/apache/conf/httpd.conf

예제는 aaa.com, bbb.com이라는 도메인이 있다는 가정하에 진행된다.

주의할점은 www가 없는 경우도 추가해야 한다는 점이다.

(Serveralias 설정은 제외됐다)

 

<VirtualHost www.aaa.com>
ServerAdmin webmaster@aaa.com
DocumentRoot /home/aaa/
ServerName www.aaa.com 
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log combined
</VirtualHost>

 

<VirtualHost aaa.com>
ServerAdmin webmaster@aaa.com
DocumentRoot /home/aaa/
ServerName aaa.com
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log combined
</VirtualHost>

 

<VirtualHost www.bbb.com>
ServerAdmin webmaster@bbb.com
DocumentRoot /home/bbb/
ServerName www.bbb.com 
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log combined
</VirtualHost>

 

<VirtualHost bbb.com>
ServerAdmin webmaster@bbb.com
DocumentRoot /home/bbb/
ServerName bbb.com
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log combined
</VirtualHost>

 

 

이제 아파치를 시작하면 설정이 끝난다.

여기까지 했다면 2차도메인 사이트 만드는것도 간단해진다.

abc.aaa.com를 추가하고 싶다면

 

<VirtualHost abc.aaa.com>
ServerAdmin webmaster@aaa.com
DocumentRoot /home/aaa/
ServerName abc.aaa.com
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log combined
</VirtualHost>

 

간단해지는군. 대신 DNS서버에 해당 도메인이 설정되있다는 가정 하에.

 

리스타트...

/etc/rc.d/init.d/named restart

[출처] 리눅스 서버에 여러개의 웹사이트 구현하기|작성자 강동수

 

 

서브 도메인과 가상 호스트 설정 방법은 아래의 주소를 참고하기 바란다.
http://blog.daum.net/_blog/BlogTypeView.do?blogid=09VKU&articleno=13679267#ajax_history_home

 


새로운 도메인을 추가하는 경우, 아래의 처리들을 다시한번 확인해본다.
--------------------------------------------------------------------------------
[root@ns user]# vi /etc/resolv.conf
[root@ns user]# vi /etc/hosts <--- 신규 추가 시에 추가 필요
[root@ns user]# vi /etc/named.conf <--- 신규 추가 시에 추가 필요
[root@ns user]# vi /var/named/chroot/var/named/도메인주소.zone <--- 신규 추가 시에 생성 필요
[root@ns user]# ln -s /var/named/chroot/var/named/도메인주소.zone /var/named/도메인주소.zone
[root@ns user]# vi /usr/local/apache/conf/httpd.conf <--- 신규 추가 시에 추가 필요

[root@ns user]# /etc/rc.d/init.d/named reload
[root@ns user]# service named restart
[root@ns user]# service httpd restart

이제, 도메인을 등록한 사이트의 네임 호스트 관리에서 네임 호스트 및 IP주소를 추가하고,
네임서버를 네임 호스트 관리에서 입력한 네임 호스트로 입력하여 변경을 수행(보통, 등록한 사이트의 네임서버로 초기설정된 상태)

등록을 완료한 후에 ISP의 네임서버에 등록 및 변경이 수행되기까지는 약간의 시간이 필요하다.
잠시 후에 아래의 명령으로 정상 등록 및 변경여부를 확인한다.

[root@ns user]# nslookup 도메인주소
[root@ns user]# dig 도메인주소

시스템 > 관리 > 사용자 및 그룹에서 사용자를 추가 후에 권한을 변경한다. 

[root@ns user]# chmod 711 /home/사용자

[root@ns user]# chmod 755 /home/사용자/www

[root@ns user]# chgrp -R star-r /home/사용자

[root@ns user]# chown -R star-r /home/사용자

 

 

DNS 설정을 위한 기본적인 파일들에 대해 알아본다.

--------------------------------------------------------------------------------
rpm -qa | grep bind   확인

* bind-9.3.6-16.P1.el5.rpm - bind 기본 패키지
* bind-libs-9.3.6-16.P1.el5.rpm - bind서버 패키지와 utils패키지에 의해 사용되는 라이브러리 포함
* bind-utils-9.3.6-16.P1.el5.rpm - name서버를 질의 하고 인터넷 호스트에 대한 정보를 찾아주는 유틸리티 모음
* caching-nameserver-9.3.6-16.P1.el5 - bind운영에 필요한 환경설정 파일 모음 패키지 

없으면 yum으로 설치
ex) yum install bind

[네임서버 설정 파일]
기본적으로 이용되는 네임서버 파일

 파일명  역할
 /etc/sysconfig/named   Chroot를 적용할 네임서버 루트 디렉토리를 설정하는 파일로 rpm패키지에만 포함되어 있다.
 /etc/init.d/named  네임서버 데몬을 띄워주는 init 스크립트
 $/etc/named.caching-nameserver.conf  네임서버 설정 파일로 chroot가 적용될 때는 /var/named/chroot/etc/ 디렉토리에 위치
 /etc/rndc.key  공유키 파일 설정
 $/var/named/*.zone  /etc/named.ca에서 명시한 존 파일이 위치하는 장소로 chroot를 적용하는 경우에는 /var/named/chroot 디렉토리에 존 파일이 위치, 존 설정 파일
 $/var/named.ca  루트네임서버 캐쉬 파일.
 $/slaves/도메인이름.zone
 $/slaves/도메인이름.rev
 primary dns서버에서 받아온 정방향 역방향 조회영역이  저장되는 파일

출처: http://croak.tistory.com/94

Posted by iWithJoy
Linux/CentOS2012. 4. 11. 18:01

Centos 5.7(192.168.0.10)에 /backup 디렉토리가 있고, 그 안의 자료를

Windows XP(192.168.0.20)의 D:\down_backup 폴더에 rsync로 끌어오는 방법입니다.   

 

 

1. Centos 5.7(192.168.0.10) 설정

 

# yum install rsync xinetd

# vi /etc/xinetd.d/rsync

___________________________________________

 service rsync
{
        disable = no                     <==== yes 를 no 로 바꾸삼.
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}
--------------------------------------------

 

# vi /etc/rsyncd.conf

---------------------------------------------

Log file = /var/log/rsync.log

 

[backup_home]            <========= 소스이름
path=/home
comment=HomeBackup
uid=root
gid=root
use chroot=yes
read only=yes
hosts allow= 192.168.0.20
max connections=10
timeout=9000000

----------------------------------------------

 

# /etc/rc.d/init.d/xinetd restart

 

방화벽에서 TCP / 873 포트 오픈

 

 

2. windows xp(192.168.0.20) 설정

 

먼저 D:\down_backup 폴더를 만든다.

그리고 아래사이트에서 cwRsyncServer_4.1.0_Installer.zip 다운받는다.

 

ftp://ftp.dutaint.co.id/freeware/ftp-webdav-ssh-server/cwRsyncServer_4.1.0_Installer.zip

 

압축을 풀고 설치를 한다.

 

설치를 하면 기본적으로 C:\Program Files\ICW 폴더에 설치가 된다.

 

backup.cmd 파일을 하나 생성한다.

----------------------------------------------------------------------------

@ECHO OFF

SETLOCAL
rem SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
SET CWRSYNCHOME=c:\Program Files (x86)\ICW
SET HOME=%HOMEDRIVE%%HOMEPATH%
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\BIN;%PATH%

 

rsync -avzrog --delete --exclude=sess_* 192.168.0.10::backup_home /cygdrive/d/@Backup/zCentOS
pause

----------------------------------------------------------------------------

/cygdrive/d/@Backup/zCentOS는 windows xp 의 D:\@Backup\zCentOS 폴더이다.

 

이제 준비가 모두 되었다. backup.cmd 파일을 실행하자.

 

C:\Program Files\ICW>backup.cmd
----------------------------------------------------------------------------

receiving incremental file list
./
.bash_history
.bash_logout
.bash_profile
.bashrc
.cshrc
.tcshrc
anaconda-ks.cfg
drop-iptable-list
install.log
install.log.syslog
.gconf/
.gconf/apps/
.gconf/apps/%gconf.xml
.gconf/apps/gnome-session/
.gconf/apps/gnome-session/%gconf.xml
.gconf/apps/gnome-session/options/
.gconf/apps/gnome-session/options/%gconf.xml
.gconfd/
.gconfd/saved_state
.lftp/
.lftp/cwd_history
.lftp/rl_history
.lftp/transfer_log

sent 376 bytes  received 13417 bytes  9195.33 bytes/sec
total size is 45121  speedup is 3.27

----------------------------------------------------------------------------

 

이렇게 실행된다.

 

backup.cmd  를 예약된 작업에 넣어서 원하는 시간대에 실행하면 자동으로 백업이 된다.

[출처] Centos 5.x 서버에서 windows XP 로 rsync로 cwRsync를 이용해서 백업 하기 |작성자 삽질맨

 

rsyncd 백업하는 방법... (For 슈퍼데몬 xinetd)

 

기본형식

댕기는거나 미는거나 커맨드 날리는 입장에서는 슈퍼대몬과 rsyncd.conf 는 반대편 서버에 셋팅되어 있음
댕기는거나 미는거나 커맨드에서 보면 원본이 앞에 오고 복사본쪽이 뒤에 나열됨

rsyncd 댕김
rsync -avzPog 원본쪽IP::백업이름 백업디렉토리

ex) rsync -avzPog 192.168.15.178::test /home/test/

rsyncd 밀다
rsync -avzPog 백업디렉토리 복사본만들IP::백업이름

ex) rsync -avzPog /data1/ 192.168.15.179::data1

 

 

ssh를 사용한 미러링
 - xinted 설정파일 및 rsyncd.conf 파일 필요없음, 사용자 인증만 되면 동기화 가능

 

ex ) rsync -avz -e ssh hostname(IP):/타켓경로 / 백업받을경로

rsync -avz -e "ssh -p 22" XXX.XXX.30.229:/home /backup/

rsync -avzPog /etc/shadow
root@XXX.XXX.15.178:/etc

 

op)
-a : archive mode 심볼릭 링크, 속성, 퍼미션, 소유권 보존
-v : verbose 진행상황 표시
-z : compress 전송시 압축 수행
-u : update only 새로운 파일을 덮어쓰지 않음
-e : 복사를 위한 원격접속쉘 프로그램을 설정한다
--delete : 서버측에 없고 클라이언트측에만 있는 파일을 지운다

: 은 ssh 나 rsh 를 이용할때 씀
:: 은 TCP 873 포트를 이용할때 설정 (xinetd)

ex)

 

rsync -avzrO --delete --exclude="backup-53/" 115.XX.XX.52::DB /home/backup-52
- 115.XX.XX.52에 설정된 DB라는 이름의 백업을 /home/backup-52파티션에 복사
- 해당 원본의 backup-53/ 폴더를 제외하고 백업을 함

파일 확장자로도 가능
--exclude=*.bak
--exclude=*.info

--exclude="backup-53/" : backup-53 폴더는 생기지만 하위자료 복사 안됨
--exclude="backup-53/" : backup-53 폴더도 생성되지 않음

 

 

error) 아래와 같이 에러시 설정부분에 문제가 없는데 계속 에러가 난다면 selinux 해제 수행: # setenforce 0

[root@localhost /]# rsync -avzO 192.168.2.53::TEST /home/backup-53/
receiving file list ... rsync: opendir "/." (in TEST) failed: Permission denied (13)
done
sent 70 bytes received 133 bytes 406.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at main.c(1385)

 

Selinux 상태 확인 및 해제하기
  1. selinux 상태 확인
    # sestatus -v
  2. selinux 해제하기
    vi /etc/selinux/config
    이후 내용 중 아래와 같이 수정한다.
    SELINUXTYPE=disabled
    또는
    # setenforce 0

     

SELinux는 보안을 강화하기 위한 프로그램이다.

매우 강력한 프로그램으로, 파일 1개 읽을 때 조차도 권한을 검사할 정도로 강력한 보안을 요구한다.

규칙을 잘 만들어서 적용하면 아주아주 강력한 보안을 설정할 수 있지만 많은 이들은 쓸데없이 서버를 부하를 일으키거나 룰셋을

만들기 어렵다는 이유로 사용을 꺼려한다.

또한 관련 서적도 국내에 나온것이 없다.(번역서가 없다 ㅠㅠ)

더 장황하게 기술적인 것을 설명(이라기 보단 어디서 퍼오기)을 할 수 있지만

그런 것은 별로 알 필요가 없기 때문에 이정도로만 알아두면 두기로 하자.

 

만약 XWindow를 이용해서 SELinux를 끄고 싶다면 아래에 있는 ProFTPD 설치하기 편을 참고하도록 하고

터미널(혹은 콘솔창이라고도 함)에서 끄고 싶다면 아래와 같이 한다.

방법은 총 3가지가 있다.


1. 수동으로 끄기 (일시적으로만 먹힘)
system-config-securitylevel
setenforce 0

2. 커널 명령행에 다음 옵션 추가. (grub.conf 등에)
selinux=0

3. /etc/selinux/config 파일 수정 ***추천***
SELINUX=어쩌구~ 써있는 것을 SELINUX=disabled로 수정

 

 

rsync 설정 1) 로컬에서 로컬 (다른 파티션 등)로 Mirroring할 경우에는 rsync를 데몬으로 띄우지 않아도 된다. 1. /etc/rsyncd.conf 설정 ;설정변경시 rsync서버 재실행할 필요가 없다. [root@p-net etc]# vi /etc/rsyncd.conf [www] path=/usr/local/apache/htdocs comment=WWW_Backup uid=root gid=root use chroot=yes read only=yes hosts allow=192.168.1.20 ;내부 ip로 공유되어 있는 경우 공인ip는 인정되지 않는다. max connections=1 timeout 600 ;설정 방법 [www]: 서비스명 path: 서비스할 디렉토리위치 comment: 설명 uid: 파일전송하는 사용자의 id. 기본값은 nobody gid: 파일전송하는 사용자의 그룹 id. 기본값은 nobody use chroot: 위의 path를 root 디렉토리로 사용. (보안상 필요) read only: 읽기전용 ( 클라이언트에서 서버로 올리는 경우에는 read only= no 로 설정) hosts allow: 호스트별 접속허용. 기본값은 all host, 접근을 허용할 호스트의 ip를 적어주면 됨 hosts deny: 이 모듈에 연결할 수 없는 호스트들 리스트 max connections: 동시접속자수 timeout: 클라이언트에서 접근시 타임아웃시간. anonymous 로 운영하는 경우 설정을 해야 클라이언트가 죽었을 때 서버에서 접속을 해체할 수 있음 auth users: "auth users" 옵션은 이 모듈에 접속을 허락하는 사용자 이름의 리스트를 콤마(comma)와 공백(space)로 지정한다. 사용자 이름은 지역 시스템에 존재하지 않아도 된다. “auth users”가 지정되어 있다면 클라이언트(client)는 사용자이름과 비밀번호를 이 모듈에 접속하기 위해서 제공해야 할 것이다. 이 교환을 위해서 사용되어지는 인증 프로토콜이 요구에 응답한다. 사용자이름들과 비밀번호들이 “secrets file” 옵션으로 지정되는 text 파일에 저장된다. 모든 사용자를 위해서 기본적으로 비밀번호 없이 접속할 수 있다. (이것을 “익명(anonymous) rsync”라고 부른다). secrets file: "secrets file" 옵션은 인증을 위해서 사용되는 항상의 username:password를 포함하는 파일의 이름을 지정한다. 이 파일은 “auth users” 옵션이 지정되었을 때만 참조한다. 이 파일은 행 기반이고 :(single colon)으로 구분되는 한 쌍의 username:password를 포함하고 있다. hash(#)로 시작하는 행은 주석으로 해석되고 생략된다. 비밀번호는 어떠한 문자로도 가능하지만, 많은 운영체제에서 클라이언트(client) 끝에서 치지는 패스워드의 길이의 제한을 주의해서, 8문자 보다 더 큰 패스워드는 동작하지 않을 것이다. "secrets file" 에는 기본 옵션이 없으므로, 이름을 지정해야 한다. ( /usr/local/rsync/etc/rsyncd.secrets 처럼) 2. /etc/xinetd.d/rsync 설정 [root@p-net etc]# vi /etc/xinetd.d/rsync disable = no -> disable = yes [root@p-net etc]# service xinetd restart 3. 방화벽 설정 [root@p-net etc]# vi /etc/sysconfig/iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT ;873 tcp포트 개방
또는

-A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT
[root@p-net mail]# /etc/init.d/iptables restart 4. Client에서 접속 1) 접속 옵션 -a : archive mode (심볼릭 링크, 속성, 퍼미션, 소유권 등 보존). -v : verbose(상세하게 보여움). -z : compress(전송시 압축을 함). --delete : 전송시 원본에 없는 파일을 복사본에서 삭제함 2) 정상접속 후 자료 수신 [root@linuxhost root]# rsync -avz 192.168.1.200::www /usr/local/apache2/htdocs/ receiving file list ... done 3) 방화벽이 오픈되지 않은 상태에서 rsync로 접속을 시도한 경우 [root@linuxhost root]# rsync -avz 192.168.1.200::www /usr/local/apache2/htdocs/ rsync: failed to connect to 192.168.1.200: No route to host rsync error: error in socket IO (code 10) at clientserver.c(97) 4) 접속허용 ip주소가 제대로 설정되지 않은 경우 [root@linuxhost root]# rsync -avz 192.168.1.200::www /usr/local/apache2/htdocs/ @ERROR: access denied to www from unknown (192.168.1.20) rsync: connection unexpectedly closed (69 bytes read so far) rsync error: error in rsync protocol data stream (code 12) at io.c(150) <리스트 5> 특정한 ssh port 사용 rsync -avuzr -e "ssh -p 8888" /home 192.168.100.210:/data 접속할 서버의 패스워드 문제 cron에 등록해 자동화할 때 이것으로 인해 문제가 초래될 수 있다. 이때는 My Server의 ssh 키를 백업 서버에 다음과 같이 복사해 패스워드 없이도 접속할 수 있도록 설정한다. scp ~/.ssh/id_rsa.pub root@192.168.100.210:.ssh/ authorized_keys rsync의 업데이트 파일 인식 rsync가 업데이트된 파일인지 아닌지를 구별하는 방법은 다음과 같다. 먼저 My Server의 /home과 백업 서버의 /data 디렉토리 내에 있는 동일한 이름의 파일을 각각 비교한다. /data 에 있는 파일의 시간보다 /home에 있는 파일의 시간이 더 최근 것이면 업데이트된 파일이라고 판단한다. 만일 갱신된 파일이지만, 서버의 시간이 올바로 설정되지 않아 /data에 존재하는 동일 이름의 파일 시간보다 과거의 시간으로 표시되었다면 rsync는 이를 업데이트된 것으로 인식하지 못한다. 따라서 서버의 시간은 항상 정확하게 유지되어야 한다. 만일 인증키를 심을 수 없는 환경이라면 <리스트 6>을 참고해 자동으로 패스워드를 입력해주는 스크립트를 제작한다. 이를 통해서도 rsync 백업을 자동화 할 수 있다. <리스트 6> expect를 이용한 rsync 자동화 #!/usr/bin/expect spawn /rsync -avuzr -e "ssh -p8060" /home 192.168.100.210:/data expect " expect 'root@192.168.100.210's password:" send "패스워드\r" interact [출처] 웹 관리자를 위한 응급처치법|작성자 아트

Posted by iWithJoy
Linux/CentOS2012. 4. 10. 18:42

최신 php 5.4.0을 설치하였다가 보안관계로 safe_mode 옵션항목 등이 삭제된 관계로

kcp에서 제공한 실행파일을 php에서 사용이 불가하여, 결국, php 5.3.10으로 다운그레이드 수행이 필요하였다.

 

@ 패키지 제거 및 설치
# rpm -qa httpd php mysql
# yum remove -y httpd php mysql
# rm -fR php

# rm /usr/local/lib/php.ini

 

 

@ PHP 설치
# cd /usr/local/src
# wget http://kr2.php.net/get/php-5.3.10.tar.gz/from/kr.php.net/mirror
# tar zxvf php-5.3.10.tar.gz
# cd php-5.3.10

# make clean ---> 처리 미존재(무처리)
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/lib --with-gd --with-freetype-dir=/usr/local/freetype --with-zlib --enable-sockets --enable-gd-native-ttf --with-png-dir=/usr/local/lib --with-jpeg-dir=/usr/local/lib --enable-sigchild --enable-magic-quotes --with-gettext --enable-mbstring --enable-inline-optimization --enable-bcmath --enable-shmop --enable-calendar --enable-ftp --with-gdbm --with-iconv=/usr/local --enable-mbregex --with-imap --with-imap-ssl --with-openssl --with-curl --enable-soap --disable-debug --with-mcrypt=/usr/local/libmcrypt --with-kerberos --with-mysqli=/usr/local/mysql/bin/mysql_config
# make -j4; make install
# cp php.ini-production /usr/local/lib/php.ini ---> 5.3.0 이후 버전

 

특정 디렉토리의 파일을 실행하려면,

# vi /usr/local/lib/php.ini

...

short_open_tag = On

으로 설정해야 <?인 경우에도 php로 인식한다.

...

또한,

safe_mode = off

로 처리하거나
safe_mode_exec_dir = 특정 디렉토리명

에 지정된 해당 디렉토리에 존재하는 실행 파일만 실행가능토록 수정 필요.

(미설정 시에는 root에 있는 파일만 참조)

 

설정 인자

권장값

요약 설명

register_globals

Off

On으로 하면 php가 입력으로 받아들이는 값을 전역변수로 다루게 되므로 Off로 설정

safe_mode

On

on으로 설정하면 시스템 중요 파일(/etc/passwd) 접근을 제한할 수 있으나, 웹 프로그램이 정상 작동하지 않을 수 있다.

safe_mode_gid

Off

위 설정과 연관되어 시스템 중요 파일(/etc/passwd) 접근을 제한할 수 있으나, 웹 프로그램이 정상 작동하지 않을 수 있다.

expose_php

Off

웹 브라우저의 요청에 대해 PHP 정보 노출을 방지한다.

file_uploads

Off

파일 업로드를 사용하지 않을 경우 Off로 설정 한다.

allow_url_fopen

Off

On으로 설정하면 파일 액세스 시 외부 사이트의 파일을 호출할 수 있다. 특히 include(), require() 계열의 함수 사용 시 심각한 보안상의 문제를 유발한다.

magic_quotes_gpc

On

On으로 설정하면 PHP가 입력으로 받아들이는 값에 단일 인용부호, 이중 인용부호, 백슬래시, 널문자가 포함된 경우 자동으로 해당 문자앞에 백슬래시를 추가하여 특수문자 처리한다.

magic_quotes_sybase

Off

Sybase 사용자의 정상적인 DB 접속을 위해 만들어진 기능. magic_quotes_gpc 설정을 무의미하게 만들 수 있으므로 Sybase 사용자가 아니면 Off로 설정한다.

open_basedir

디렉토리

해당 옵션에 특정 디렉토리를 설정하면, 지정된 디렉토리 내에서만 파일접근 가능

safe_mode_exec_dir

디렉토리

해당 옵션을 사용하면 system(), exec(), passthru() 등 외부 명령어 실행 시 지정된 디렉토리에 존재하지 않는 프로그램은 실행할 수 없게 된다.

임의로 업로드한 공격도구나 wget, xterm 등 공격에 사용될 수 있는 명령어를 제한할 수 있다.

display_errors

Off

PHP 실행 중 에러 정보 노출을 방지하는 역할, 필수적이므로 Off 설정

log_errors

On

On으로 설정하면 PHP 실행 중 발생하는 경고나 에러 정보를 error_log에서 지정한 파일에 기록, 의도적인 에러 발생 시도를 확인해 볼 수 있다.

error_log

파일명

PHP 실행 중 발생하는 경고나 에러 정보를 작성할 파일을 지정

 

 

gd library 설치

#yum install gd gd-devel php-gd

#vi /usr/local/lib/php.ini

...

display_errors=On

...

extension=php_gd2.dll
...

extension=php_mbstring.dll
extension=php_exif.dll      ; Must be after mbstring as it depends on it
...

#service httpd restart

 

gd 설치여부 확인

<?
 $Arr_Gd= @gd_info();
 if(!$Arr_Gd["GD Version"])
  echo "gd설치안됨";
 else
  echo $Arr_Gd["GD Version"];
?>

 

웹상에서 PHP.INI의 설정내용 보기

 

문법:ini_get("php.ini항목명");

설명:환경설정의 값(phpinfo())에서 정보를 공백(off) 또는 1(on)로 얻어옵니다.

주의점:phpinfo()에서 configuration php core 부분의 정보만 가져올수있습니다.

 

<?php

echo 'register_globals = ' . ini_get('register_globals') . "\n";
echo 'post_max_size = ' . ini_get('post_max_size') . "\n";
echo 'post_max_size+1 = ' . (ini_get('post_max_size')+1) . "\n";

?>

 

웹상에서 PHP.INI의 설정내용 바꾸기

 

문법:ini_set("php.ini항목명","0 또는1");

설명:환경설정의 값을 공백(off) 또는 1(on)로 사용한 페이지에서만 임시로 수정합니다.

 

ex)

현재 버전에서는 제대로 되지 않습니다.

 

기타 PHP관련 정보 얻어오기

 

ex)

<?
echo "php버전은 : ".phpversion()."<br>";
echo "zend버전은 : ".zend_version()."<br>";
echo "apache버전은 : ".apache_get_version()."<br> ";

echo "php전체 설정내용은 : ".phpinfo()."<br>";
?>

 

 

Posted by iWithJoy
Linux/CentOS2012. 4. 10. 17:05

# vi /usr/local/lib/php.ini

 

1. engine - PHP가 아파치 모듈로 설치 되었을 경우 특정 디렉토리에서만 스크립트가 동작하게 합니다.
이것은 아파치 httpd.conf 파일에 아래 항목을 추가합니다.


php_admin_flag engine on(PHP3의 경우 php3_engine on)


2. short_open_tag - php tag 사용여부를 정합니다. XML과 같이 사용할 경우 이 부분은 on으로
해야 합니다.

3. asp_tags - ASP 태그의 사용 여부를 설정합니다.

4. y2k_compliance - y2k 문제에 해당하는 브라우저를 위한 설정입니다.

5. safe_mode - php를 안전 모드로 동작 하게끔 하는 설정입니다.

safe_mode_exec_dir 지시자의 해당 디렉토리에 존재하는 실행 파일이 아닌 경우 실행 되지 않습니다.
(root에 있는 파일만 참조하게 합니다.)

6. safe_mode_exec_dir - 실행 프로그램이 있는 디렉토리 명을 적어 줍니다.

"5번"참고

7. max_execution_time - 스크립트 실행 시간을 초단위로 설정합니다.

8. memory_limit - 스크립트 실행 때 메모리 사용을 설정합니다.

9. error_reporting - 에러 출력을 설정합니다.

에러의 종류

1 - 일반적인 에러 출력(Normal function errors)
2 - 일반적인 에러 출력(Normal warnings)
4 - 문법적인 에러 출력(Parser errors)
8 - 버그의 가능성이 있으며 무시할 수 있는 에러 출력(Notices)

10. display_errors - 에러 상황을 html 양식으로 보여줍니다.

11. log_errors - 여러 가지 에러를 로고 파일에 저장합니다.

12. track_errors - $php_errormsg에 마지막의 에러나 경고 메시지를 저장합니다.

13. warn_plus_overloading - 스크립트에서 문자열 결합사용 때 " . " 연산자를 사용하지만 만약
" + "를 사용했을 경우 경고 메시지 출력 여부를 설정합니다.

14. track_vars - GET, POST, COOKIE 등으로 전달된 변수 값을 각각의 $HTTP_GET_VARS , $HTTP_POST_VARS ,
$HTTP_COOKIE_VARS의 배열 변수로 자동 저장 여부를 설정합니다.

15. magic_quotes_gpc - GET , POST , COOKIE 등으로 전달된 데이터에 ‘ " / 등의 문자가 존재할 경우
자동으로 ()역슬래쉬를 붙일지 여부를 설정합니다. 이것은 각 문자를 스크립트와 구별
해서 인식시키기 위해 필요한 부분입니다.

16. magic_quotes_runtime - 외부 스크립트나 여타 소스로부터 돌아오는 데이터에 대해 ()역슬래쉬를 붙일지
여부를 설정합니다.

17. auto_prepend_file - INCLUDE와 비슷한 부분이고, 스크립트의 처음 부분에 포함될 파일명을 적어 줍니다.

18. auto_append_file - "17번"과 같으며 마지막 부분에 포함될 파일명을 적어 줍니다.

19. include_path - INCLUDE, REQUIRE 문의 파일 경로를 설정합니다.

20. doc_root - 서버의 루트 디렉토리를 설정합니다. 안전 모드로 동작할 경우 해당 디렉토리를 벗어나 다른
쪽으로 접근을 할 수 없습니다.

21. user_dir - 서버의 계정을 가진 일반 유저에 PHP 스크립트의 사용을 허가할 수 있습니다.

22. upload_tmp_dir - 파일이 업로드 될 디렉토리를 설정합니다. 기본적으로 /tmp 디렉토리로 업로드 됩니다.

23. upload_max_filesize - 업로드 할 수 있는 최대 파일 크기를 설정합니다.

24. SMTP - mail( ) 함수의 사용을 위해 현 서버의 DNS , IP를 적어줍니다.

25. sendmail_from - 보내는 메일 주소를 설정할 수 있습니다.

26. sendmail_path - sendmail 서버가 있는 위치를 적어 줍니다.

27. debugger.host - 디버거로 사용하는 호스트 명을 적어 줍니다.

28. debugger.port - 디버거로 사용하는 포트 번호를 적어 줍니다.

29. debugger.enabled - 디버거의 사용 여부를 설정 합니다.

30. session.save_handler - 세션과 해당 데이터를 저장하는 방식을 설정하는 부분입니다. 기본적으로 파일 방식
입니다. 세션 항목은 이 책에 사용되는 회원제 부분에서 사용됩니다.

31. session.save_path - 세션 전달 인수를 정의 하는 부분이며 디폴트인 파일 방식일 경우 해당 파일의 경로를
적어 줍니다.

32. session.name - 쿠키 이름으로 사용되어질 세션 이름을 설정합니다. 디폴트는 PHPSESSID입니다.

33. session.auto_start - 세션 요청 시에 자동 모듈 생성 여부를 설정합니다.

0 - off , 1 - on

34. session.lifetime - 해당 세션이 유지 되는 시간을 설정 합니다.
디폴트의 경우 0이며 사용자의 브라우저가 종료 될 때까지 유지됩니다.

35. session.gc_probability - 해당 세션 값이 제거 될 경우 낭비 되는 시스템 메모리 자원을 반납하는 시점을
설정합니다.

36. session.gc_maxlifetime - 해당 세션의 시스템 메모리 자원 반납을 가질 수 있는 시간을 설정합니다.

http://www.ihelpers.co.kr

출처
http://www.phpschool.com/bbs2/inc_view.html?id=1322&code=tnt2&start=0&mode=search&field=title&search_name=&operator=and&period=all&category_id=&s_que=php.ini

추가 참고: http://blog.naver.com/autovan74?Redirect=Log&logNo=100021168844

 

수정 후에는 php.ini의 속성을 확인하여 755인지 확인하고, 아니면,

# chmod 755 php.ini

를 수행하여 속성변경하고,

# service httpd restart

를 수행하여 Apache를 재시작한다.

 

PHP 5.4.0 부터 일부 밀접한 옵션 및 함수들이 삭제되었습니다. 

PHP 5.3 버전때부터 예고되었다고는 하는데.. 막상 갑자기 에러메세지를 내뿜으니 좀 당황스럽더군요.

 

일단 변경 사항 가운데 저한테 와 닿는 항목 위주로 적어 보았습니다.

아래 내용은 압축파일의 news.txt 에도 들어 있습니다.

 

<PHP 5.4.0 변경 사항 중 일부>

 

 * php.ini

  - Safe mode와 관련 항목 삭제 

  - register_globals, register_long_arrays 항목 삭제

  - short_open_tags 와 관계없이 무조건 <? 태그 지원

  - default_charset 의 기본값이 utf-8 로 변경됨

 

 * php 함수

  - 세션 함수 session_is_registered(), session_register(), session_unregister() 삭제

 

 * 구문

  - 2진수 0b001010 형식 지원 

자세한 사항은 다음을 참고: http://www.php.net/manual/en/ini.sect.safe-mode.php

 

 

Posted by iWithJoy
Linux/CentOS2012. 4. 9. 19:17

yum -y install gcc cpp gcc-c++ compat-gcc-34-g77 flex openssl*
yum -y install libjpeg-devel libpng-devel freetype-devel gd-devel libtermcap-devel ncurses-devel libxml2-devel libc-client-devel bzip2-devel
#yum -y install libtermcap-devel [MYSQL컴파일에_적용]
#yum -y install ncurses-devel
#yum -y install libxml2-devel [PHP컴파일에_적용]
#yum -y install openssl*
#yum -y install libc-client-devel
#yum -y install bzip2-devel
rpm -qa gcc* cpp* compat-gcc* flex* openssl*
rpm -qa libjpeg* libpng* freetype* gd-*

reboot [패키지_변경시_리부팅_필요]

cd /usr/local/src
wget ftp://ftp.neowiz.com/pub/mysql/Downloads/MySQL-5.0/mysql-5.0.67.tar.gz
tar xvzf mysql-5.0.67.tar.gz
wget ftp://ftp.neowiz.com/pub/apache/httpd/httpd-2.2.10.tar.gz
tar xvzf httpd-2.2.10.tar.gz
wget ftp://ftp.neowiz.com/pub/languages/php/php-5.2.6.tar.gz
tar xvzf php-5.2.6.tar.gz
useradd -M -s /bin/false mysql
cd /usr/local/src/mysql-5.0.67
./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-extra-charsets=all
make && make install
ll /usr/local/mysql
/usr/local/mysql/bin/mysql_install_db --user=mysql
chown -R root.mysql /usr/local/mysql
chown -R mysql /usr/local/mysql/var
vi /etc/skel/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
source ~/.bash_profile
cp /usr/local/mysql/share/mysql/my-huge.cnf /etc/my.cnf
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list mysqld
service mysqld start

cd /usr/local/src/httpd-2.2.10
vi /usr/local/src/httpd-2.2.10/server/mpm/prefork/prefork.c
# define DEFAULT_SERVER_LIMIT 2048
vi /usr/local/src/httpd-2.2.10/server/mpm/worker/worker.c
# define DEFAULT_SERVER_LIMIT 512
# define DEFAULT_THREAD_LIMIT 2048
./configure --prefix=/usr/local/apache --enable-mods-shared=all --enable-so --enable-ssl --enable-modules=ssl --enable-rewrite --with-mpm=prefork

make && make install
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
vi /etc/init.d/httpd
# chkconfig: 2345 90 90
# description: init file for Apache server daemon
# processname: /usr/local/apache/bin/apachectl
# config: /usr/local/apache/conf/httpd.conf
# pidfile: /usr/local/apache/logs/httpd.pid
chkconfig --add httpd
chkconfig --list httpd
service httpd start

cd /usr/local/src/php-5.2.6

./configure --with-config-file-path=/etc --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --disable-debug --enable-safe-mode --enable-sockets --enable-sysvsem=yes --enable-sysvshm=yes --enable-ftp --enable-gd-native-ttf --enable-inline-optimization --enable-bcmath --with-zlib --with-jpeg-dir --with-png-dir --with-freetype-dir --with-libxml-dir --enable-exif --with-gd --with-ttf --with-gettext --enable-sigchild --enable-mbstring --with-openssl --with-imap --with-imap-ssl --with-kerberos

./configure \
--with-config-file-path=/etc \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--disable-debug \
--enable-safe-mode \
--enable-sockets \
--enable-sysvsem=yes \
--enable-sysvshm=yes \
--enable-ftp \
--enable-gd-native-ttf \
--enable-inline-optimization \
--enable-bcmath \
--with-zlib \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-libxml-dir \
--enable-exif \
--with-gd \
--with-ttf \
--with-gettext \
--enable-sigchild \
--enable-mbstring \
--with-openssl \
--with-imap \
--with-imap-ssl \
--with-kerberos

make && make install
cp /usr/local/src/php-5.2.6/php.ini-dist /etc/php.ini
vi /usr/local/apache/conf/httpd.conf
User apache
Group apache

ServerName www.hompy.info:80
DocumentRoot "/usr/local/apache/htdocs"

LoadModule ssl_module modules/mod_ssl.so

<IfModule dir_module>
     DirectoryIndex index.html index.htm index.php
</IfModule>

<IfModule mime_module>
     AddType application/x-httpd-php .php .html
     AddType application/x-httpd-php-source .phps
</IfModule>

Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-default.conf
Include conf/extra/httpd-ssl.conf

service httpd restart
rm /usr/local/apache/htdocs/index.html
echo '<?php phpinfo() ?>' > /usr/local/apache/htdocs/index.php

cd /usr/local/src
tar xvzf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.3.3-linux-glibc23-i386
./install.sh
# rm /etc/php.ini
# ln -s /usr/local/Zend/etc/php.ini /etc/php.ini

/usr/local/php/bin/pear upgrade-all
/usr/local/php/bin/pear install DB File Mail Mail_Mime
/usr/local/php/bin/pear install MDB2 MDB2_Driver_mysql MDB2_Driver_mysqli
/usr/local/php/bin/pear install HTTP_Request XML_RPC

vi /etc/skel/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/php/bin
vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/php/bin
source ~/.bash_profile

/usr/local/apache/conf/httpd.conf
#Include conf/extra/httpd-ssl.conf

mkdir /usr/local/apache/conf/ssl
cat > /usr/local/apache/conf/ssl/auto.sh
#!/bin/sh
echo "password"
^D
chmod 700 /usr/local/apache/conf/ssl/auto.sh

vi /usr/local/apache/conf/extra/httpd-ssl.conf

#SSLPassPhraseDialog  builtin
SSLPassPhraseDialog  exec:/usr/local/apache/conf/ssl/auto.sh

DocumentRoot "/usr/local/apache/htdocs"
ServerName www.hompy.info:443
ServerAdmin you@hompy.info

SSLCertificateFile /usr/local/apache/conf/ssl/server.crt

SSLCertificateKeyFile /usr/local/apache/conf/ssl/server.key

SSLCertificateChainFile /usr/local/apache/conf/ssl/server-ca.crt

service httpd restart

 

 

그래서 우리의 전문분야는 아니지만 비교적 무난하게 소스 컴파일로 웹 서버와 데이타베이스 서버를 설치하는 데 참고가 될만한 동영상을 준비했습니다. 나름대로의 설치 시나리오를 가지고 진행 과정을 동영상으로 담은 것입니다. 리눅스 배포판 CentOS 5.2 가 설치된 컴퓨터에 Apache, PHP, MySQL 시리즈 APM과 Zend 설치 그리고 요즘 개인정보 보호를 위해 한국정보보호진흥원에서 설치하도록 명시하고 있는 보안서버 적용을 위한 OpenSSL 모듈을 설치하고 셋팅하는 장면입니다.

여러가지 가능성이 고려되지 않은 동영상이므로 관련 기술 문서도 함께 참고하세요.
Apache,PHP,MySQL,Zend,OpenSSL 설치 동영상  - http://hompy.info/527

'Linux > CentOS' 카테고리의 다른 글

php 5.4.0에서 5.3.10으로 다운그레이드  (0) 2012.04.10
php.ini 설정법  (0) 2012.04.10
Gmail for CentOS  (0) 2012.04.03
DNS 설정  (0) 2012.03.30
CentOS에서 rpm 데이터베이스 문제로 yum을 사용할 수 없을때  (0) 2012.03.09
Posted by iWithJoy
Linux/CentOS2012. 4. 3. 00:21

Gmail for CentOS (http://www.jopenbusiness.com/mediawiki/index.php/CentOS)

CentOS 5.5 버전에서 sendmail을 사용하여 Gmail을 연동하여 보자.

  • sendmail 설치
yum install openssl sendmail sendmail-cf
yum install cyrus-sasl cyrus-sasl-plain
  • sendmail이 TLS 또는 SSL을 지원하는지 확인 한다.
#--- STARTTLS와 SASLv2가 있는지 확인
sendmail -d0.1 -bv root
  • SASL 2.1.21 이상을 지원하는지 확인 한다.
yum list | grep sasl
  • OpenSSL을 사용하여 sendmail에서 사용할 개인키와 공개키를 생성를 생성 한다.
  • sendmail 인증 정보를 생성 한다.
cd /etc/mail
mkdir auth
cd auth
vi /etc/mail/auth/authinfo
    AuthInfo:smtp.gmail.com "U:root" "I:[Gmail아이디]@gmail.com" "P:[Gmail비밀번호]"
    ### AuthInfo:smtp.gmail.com "U:root" "I:[Gmail아이디]@gmail.com" "P:[Gmail비밀번호]" "M:PLAIN"
    ### AuthInfo:smtp.gmail.com:587 "U:root" "I:[Gmail아이디]@gmail.com" "P:[Gmail비밀번호]" "M:PLAIN"

#---인증 파일의 hashdb(authinfo.db)를 생성 한다.
makemap hash authinfo < authinfo

#--- 인증파일경로의 퍼미션을 설정 한다.
chmod 700 /etc/mail/auth
chmod 600 /etc/mail/auth/*
  • vi /etc/mail/sendmail.mc
include('/etc/mail/sasl/sasl.m4')dnl            #--- Ubuntu Server에서만 추가
FEATURE(authinfo,hash /etc/mail/auth/authinfo)dnl
define('SMART_HOST','smtp.gmail.com')dnl
define('RELAY_MAILER_ARGS', 'TCP $h 587')dnl
define('ESMTP_MAILER_ARGS', 'TCP $h 587')dnl
define('confCACERT_PATH', '/etc/mail/certs')dnl
define('confCACERT', '/etc/mail/certs/CAcert.pem')dnl
define('confSERVER_CERT', '/etc/mail/certs/mycert.pem')dnl
define('confSERVER_KEY', '/etc/mail/certs/mykey.pem')dnl
define('confCLIENT_CERT', '/etc/mail/certs/mycert.pem')dnl
define('confCLIENT_KEY', '/etc/mail/certs/mykey.pem')dnl
define('confAUTH_MECHANISMS', 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
TRUST_AUTH_MECH('EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
define('confAUTH_OPTIONS', 'A')dnl
#--- 아래 라인 위에 추가 한다.
MAILER(smtp)dnl
  • sendmail.cf 생성
  • CentOS
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
service sendmail restart
  • Ubuntu Server
cd /etc/mail
make

#--- 필요한 경우 sendmail의 설정을 재 생성 한다. 
sendmailconfig

/etc/init.d/sendmail start
  • 최종 확인
echo '/map authinfo AuthInfo:smtp.gmail.com' | /usr/sbin/sendmail -bt
echo "this is a test" | sendmail -s ghkim@daou.co.kr
#--- ghkim@daou.co.kr 메일함에서 메일을 확인 한다.
  • 방화벽에서 587, 465 port를 개방 한다.
system-config-securitylevel
  • 기타 sendmail 설정
  • Access 설정
makemap hash /etc/mail/access.db < /etc/mail/access
  • Mail host 설정
vi /etc/mail/local-host-names
  • showinfo_sendmail.bash
#!/bin/bash
echo 'sendmail 버전  : sendmail 8.13.8'
echo '환경 파일      : vi /etc/mail/sendmail.mc'
echo '기동 종료      : service sendmail restart'
echo '서비스 확인    : ps -ef | grep sendmail | grep -v grep'
  • php.ini 설정
sendmail_path = /usr/sbin/sendmail -t

서비스 업체별 POP3, SMTP 주소

  • gmail.com (환경설정 - 전달 및 POP/IMAP - POP 다운로드 항목에서 사용설정을 해야 이용 가능)
  • IMAP: imap.gmail.com (SSL 사용, 포트: 993)
  • POP3: pop.gmail.com (SSL 사용, 포트: 995)
  • SMTP: smtp.gmail.com (SSL 사용, 포트: 465)
  • hanmail.net
  • POP3: pop.hanmail.net (SSL 사용, 포트: 995)
  • SMTP: smtp.hanmail.net (SSL 사용, 포트: 465)
  • nate.com
  • POP3: nate.com (포트: 110)
  • SMTP: 지원 안함 (다른 업체의 SMTP를 이용하는 수 밖에 없음)
  • naver.com (으뜸사용자만 이용 가능)
  • POP3: pop.naver.com (포트: 110)
  • SMTP: smtp.naver.com (포트: 25)
  • yahoo.co.kr
  • POP3: pop.mail.yahoo.co.kr (SSL 사용, 포트: 995)
  • SMTP: smtp.mail.yahoo.co.kr (SSL 사용, 포트: 465, 인증 사용)
  • yahoo.com
  • POP3: pop.mail.yahoo.com (SSL 사용, 포트: 995)
  • SMTP: smtp.mail.yahoo.com (SSL 사용, 포트: 465, 인증 사용)

참고 문헌

  • Ubuntu Server
  • CentOS

Outlook 설정

  • Microsoft Outlook를 실행하여 "도구 -> 계정 설정 -> 새로 만들기" 메뉴를 선택 합니다.
  • "Microsoft Exchange, POP3, IMAP 또는 HTTP"을 선택 합니다.

그림:GoogleOutlook001.png

  • "수동으로 서버 설정 또는 추가 서버 유형 구성"을 선택 합니다.

그림:GoogleOutlook002.png

  • "인터넷 전자 메일"을 선택 합니다.

그림:GoogleOutlook003.png

  • 필요한 정보를 입력하고 "기타 설정" 버튼을 선택 합니다.
  • 사용자 이름 : 사용자 이름
  • 전자 메일 주소 : 이메일 주소
  • 계정 유형 : IMAP
  • 받는 메일 서버 : imap.gmail.com
  • 보내는 메일 서버 : smtp.gmail.com
  • 사용자 이름 : 이메일 주소
  • 암호 : 비밀번호
  • 암호 저장 체크

그림:GoogleOutlook004.png

  • "고급" 탭을 선택하여 아래와 같이 설정 합니다.
  • 받는 메일 서버 : 993
  • 암호화된 다음 연결 방식 사용 : SSL
  • 보내는 메일 서버 : 25
  • 암호화된 다음 연결 방식 사용 : TLS

그림:GoogleOutlook005.png

  • "보내는 메일 서버" 탭을 선택하여 아래와 같이 설정 합니다.
  • "보내는 메일 서버 인증 필요" 체크
  • "받는 메일 서버와 동일한 설정 사용" 선택

그림:GoogleOutlook006.png

 

 

CentOS sendmail 메일 서버 설치, 설정 (http://blog.leadus.co.kr/119)

1) 메일 서버 설치 여부를 확인한다.

[root@localhost ~]# yum list |grep sendmail
sendmail.x86_64                       8.13.8-8.el5              installed
sendmail-cf.x86_64                    8.13.8-8.el5              installed
sendmail-devel.x86_64                 8.13.8-8.el5              installed

2) dovecot 설치한다.

[root@localhost ~]# yum list |grep dovecot
dovecot.x86_64                        1.0.7-7.el5               base
[root@localhost ~]# yum install dovecot.x86_64

dovecot의 개요
RHEL 4부터 사용되는 imap, pop3 서비스 제공 프로그램으로 기존의 imap
패키지에 비해 TLS/SSL을 지원하여 보안이 강화되었다. 또한 기존에는 imap, pop3
서비스가 inetd(xinetd)에 의해 작동하였지만, dovecot는 단독 데몬으로 작동한다.
참고로 관련정보는 http://www.dovecot.org(새 창으로 열기)에서 확인할 수 있다.

3) sendmail.mc 파일을 수정한다.
vi /etc/mail/sendmail.mc

아래의 부분을 확인한다. 주석처리되어 있으면 제거한다.
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

아래의 부분은 주석처리한다.
DAEMON_OPTIONS(`Port=smtp,Addr=112.169.173.161, Name=MTA')dnl
==> dnl DAEMON_OPTIONS(`Port=smtp,Addr=112.169.173.161, Name=MTA')dnl

4) sendmail.mc 적용
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

변경후 결과
-rw-r--r-- 1 root root 58368  6월 13 22:33 sendmail.cf
==> -rw-r--r-- 1 root root 58338  8월 31 16:33 sendmail.cf

5) 최종수신지 도메인 설정  
vi /etc/mail/local-host-names
leadus.co.kr  RELAY

test :
linkus.kr  RELAY

*** 스팸방지
Spam 방지 ( /etc/mail/access )
  linkus.kr  RELAY
 
  makemap hash /etc/mail/virtualusertable.db < /etc/mail/access  <- access 적용 access.db 파일 생성
  또는 /etc/mail 디렉토리에서 간단히 make

가상 메일 ( /etc/mail/virtualusertable )
  webmaster@linkus.kr root
   webmaster@linkus.kr 으로 오는 메일은 root 라는 실제계정이 받게 함

  makemap hash /etc/mail/virtualusertable.db < /etc/mail/virtualusertable
  또는 /etc/mail 디렉토리에서 간단히 make


6) Dovecot 설정
vi /etc/dovecot.conf
  protocols = pop3 <- imap 제외 pop3 만 사용
  listen = *  <- ipv6 사용 안 하고 ipv4 만 사용 ==> php3_listen = * 버전업되면서 바뀌었다.

7) 서비스 시작
 /etc/init.d/sendmail start
 /etc/init.d/saslauthd start <- smtp 인증을 위해 필요
 /etc/init.d/dovecot start

 

Posted by iWithJoy
Linux/CentOS2012. 3. 30. 00:17

[이 문서에 기술된 내용은 CentOS 4.1이 아닌 다른 linux 서버에서는 정상적으로 동작하지 않을 수 있으며 이해를 위해서 카테고리의 다른 문서부터 순서대로 읽는 것이 좋습니다.]

 

 

 

만일 설치부터 필자를 계속 따라오신 분이라면 현재의 서버엔 BIND 9가 설치되어 있을 것이다.

확인해 보도록 하자.

 

# rpm -qa | grep bind
bind-libs-9.2.4-2
bind-utils-9.2.4-2
ypbind-1.17.2-3
bind-9.2.4-2
bind-chroot-9.2.4-2

 

네임서버도 설치되어 있나 확인해 보자.

# rpm -qa | grep name
caching-nameserver-7.3-3

 

이젠 서버에선 DNS를 설정할 준비가 끝났다.

 

아래 점섬내의 글은 BIND가 설치되지 않으신 분들만 보도록 하자~~

=======================================================================================

1. 설치

네임서버를 구축하기에 앞서 설치에 필요한 주요 패키지 목록을 확인해 보자.

bind-9.3.4-10.pl.el5       :   bind의 기본 패키지.
bind-libs-9.3.4-10.pl.el5      :  bind 서버패키지와 utils패키지에 의해 사용되는 라이브러리.
bind-utils-9.3.4-10.pl.el5     :  dns 네임 서버를 질의하고 인터넷 호스트에 대한 정보를 찾는 유틸 모음이다. 이를 사용하여 주어진 호스트명에 ip주소를 결정할 수 있으며 등록된 도메인과 네트워크 주소에 관한 정보를 찾을 수 있다.
caching-nameserver-9.3.4-10.pl.el5    :  bind운영에 필요한 환경설정파일 모음 패키지.

이외에 bind 개발관련 패키지나 zone파일을 db화 할 수 있는 패키지등 많은 관련 패키지들이 있으나 dns 설치,운영에 필요한 주요 피키지는 위의 네가지라 할 수 있겠다.

설치가 되어 있지 않다면 패키지 설치에 유용한 도구인 yum을 이용하여 설치해 주자.
#yum install bind
#yum install caching-nameserver


이렇게 설치가 끝났다면, dns 실행 준비가 된 것 입니다.

- CentOS 4.1 설치시 패키지선택에서 DNS 이름서버를 선택하면 위의 내용이 모두 설치됨.
  (위와 같은 설치과정을 거칠 필요가 없음)

=======================================================================================

 

이해를 돕기위해 사용되는 예제에서 필자는 test.net 이란 가상의 도메인과 192.168.1.100 이란 공인IP를 사용하것으로 하겠다. (참고로 192.168.~ 로 시작되는 IP는 99% 공유기 IP이다.)

설마 아래의 내용을 보고 실제로 test.net으로 따라하시는 분은 없을거라 믿는다..

 

우선 도메인을 구입하기 위해서 whois.co.kr 에 접속했다.

test.net이란 도메인을 검색했더니 다행스럽게도 소유자가 없는 도메인으로 나와서

바로 회원으로 가입하고 1년 사용료 2만얼마를 내고 도메인을 구입했다.

 

네임서버를 지정하기 위해서 [내 도메인 관리]의 [호스트 관리] 메뉴로 들어가서...

ns.test.net 이란 호스트을 만들고 IP입력란에 192.168.1.100 라고 입력한후 호스트명 생성을 클릭.

 

[내 도메인 관리] - [네임서버 변경]으로 들어가서 1차 네임서버에 ns.test.net , 2차 네임서버는 whois에서 제공하는 네임서버명을 입력하고 저장했다.

(참고로 com 이나 .net은 외국도메인이라 적용되는데 평균 24시간정도가 소요된다.)

 

이제 다시 CentOS로 들어와서...

 

1.서버에서 도메인을 제일 먼저 찾는 곳

# vi /etc/hosts
=======================================================================================
127.0.0.1        test.net      localhost
192.168.1.100  ns.test.net  ns
=======================================================================================
위와 같이 바꾸도록 하자

 

2.서버에서 쓸 dns

# vi /etc/resolv.conf
=======================================================================================
domain test.net
search test.net
nameserver 192.168.1.100
nameserver 168.126.63.1
nameserver 168.126.63.2
=======================================================================================

 

3.도메인에 대한 ip를 찾을 때 참조할 순서
# vi /etc/host.conf
=======================================================================================
order hosts,bind

==> 초기 설치시 이렇게 되어 있으며, 의미는 /etc/hosts파일부터 찾고, bind에서 찾는다는의미
=======================================================================================

 

4.Zone 파일 및 케시 DNS서버에 대한 설정

# vi /etc/named.conf
=======================================================================================
options {
        directory "/var/named";        // zone 파일을 저장할 디렉토리
        // query-source address * port 53;  // DNS 서버의 ip와 포트 설정 (기본)
controls { //==> 127.0.0.1 에서 rndc로 접속시 컨트롤 가능하다는 의미
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
// 캐시 네임 서버 설정
zone "." IN {
        type hint;
        file "named.ca";
};
// localhost 에 대한 설정
zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };  //다이나믹 하게 업데이트를 허용할것인지 설정한다. 대부분 none
};
// 127.0.0.X 에 대한 역 도메인
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};
include "/etc/rndc.key";
=======================================================================================

아래는 CentOS 6.2에서 실제 정상으로 시작이 수행된 파일의 내용이다.
=======================================================================================
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        query-source      port 53;
        query-source-v6   port 53;
        allow-query     { any; };
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

//include "/etc/named.rfc1912.zones";


// localhost
zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };  //    .  none
};
// 127.0.0.X
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};
//include "/etc/rndc.key";


zone "test.net" IN {
type master;
file "test.net.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" { //reverse domain - IP     ~!!
type master;
file "test.net.rev";
allow-update { none; };
};
=======================================================================================

위 파일 내용들은 caching-nameserver에서 기본적으로 생성되는 것들이다. 대부분의 서버에서 별다른 설정하지 않고 사용하면 되고, 중요한 것은 다음 줄부터이다. test.net 이라는 도메인을 셋팅하도록 하겠다.

 

named.conf파일의 맨 아랫 줄에 아래의 내용을 추가한다.

=======================================================================================
zone "test.net" IN {
type master;
file "test.net.zone";
allow-update { none; };
};

zone "1.168.192.in-addr.arpa" { //reverse domain - IP가 역으로 입력되어 있는 것에 주목~!!
type master;
file "test.net.rev";
allow-update { none; };
}; 
=======================================================================================

 

zone 파일명은 test.net.zone으로 하였다.

위에서 추가한 도메인에 대한 zone 파일을 만들도록 하자..

 

# vi /var/named/chroot/var/named/test.net.zone
=======================================================================================
$TTL    86400
@       IN      SOA     ns.test.net. root.ns.test.net.  (
                2005101311 ; Serial
                28800      ; Refresh
                14400      ; Retry
                3600000    ; Expire
                86400 )    ; Minimum
                IN      NS      ns.test.net.
                IN      MX  0   mail.test.net.
;
localhost       IN      A       127.0.0.1
@                 IN      A       192.168.1.100
www            IN      A       192.168.1.100

mail              IN      A       192.168.1.100
*                  IN      A       192.168.1.100
=======================================================================================
# ln -s /var/named/chroot/var/named/test.net.zone /var/named/test.net.zone

(반드시 심볼릭 링크를 걸어야 한다~~!!!)


# vi /var/named/chroot/var/named/test.net.rev
=======================================================================================
$TTL    86400
@       IN      SOA     ns.test.net. root.ns.test.net.  (
                2005101312 ; Serial
                28800      ; Refresh
                14400      ; Retry
                3600000    ; Expire
                86400 )    ; Minimum
                IN      NS      ns.test.net.
;
100             IN      PTR     ns.test.net.
100             IN      PTR     www.test.net.
100             IN      PTR     test.net.
=======================================================================================
위에서 100이란 숫자는 IP의 제일 마지막에 해당하는 숫자이다.

# ln -s /var/named/chroot/var/named/test.net.rev /var/named/test.net.rev

 

자.. 이제 모든 설정은 끝났다.. 사실 이제부턴 네임서버를 변경한 후 하루정도가 지나야 확실한 결과를 얻을 수 있다. 또한 방화벽을 설치했다면 외부에서 네임서버로 접근할 수 없으니 주의한다. 네임서버의 포트는 42로 방화벽에서 이 포트를 풀어야 한다.

설치와 설정이 끝났다면, DNS 서버를 시작하도록 한다.

(1) 시작
# /etc/rc.d/init.d/named start

*** 시작 시에 오류가 발생하는 경우,
/var/log/messages 를 살펴보고, /etc/named.conf 에서 설정한 파일명이 없는 경우,
/var/named/chroot/var/named/ 아래에 생성하여 주고,
/var/named/ 아래에 ln 명령으로 심볼릭 링크를 생성한다.

local에 관련된 오류는 아래의 파일내역을 참고해서 생성 후에 반드시, 심볼릭 링크를 생성하여 주고,
특히, local.ca 파일은 /var/named/chroot/var/named/ 아래로 mv 를 수행시켜 놓고,
동일한 방법으로 심볼릭 링크를 생성한 후, start를 수행하면 [ OK ]로 시작된다.

/var/named/chroot/var/named/named.local
=======================================================================================
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
;
1       IN      PTR      localhost
=======================================================================================

/var/named/chroot/var/named/named.local
=======================================================================================
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
;
localhost       IN    A    127.0.0.1
=======================================================================================

(2) 재시작
# /etc/rc.d/init.d/named reload

 

(3) 정지
# /etc/rc.d/init.d/named stop

 

(4) 서버시작시 자동으로 실행

# ntsysv

named 라는 서비스에 체크하고 OK로 저장하고 나오도록 한다.

 

(5) 호스트 네임 검사
# grep named /var/log/messages

 

(6) 설정한 도메인 확인하기

# nslookup

> test.net
Server:  168.126.63.1
Address: 168.126.63.1#53

Non-authoritative answer:
Name: test.net
Address: 192.168.1.100

> server 168.126.63.1

> set type=any

> test.net

--------------------------------------------------------------------------
/etc/vhosts 또는 resolv.conf를 수정 해 줘야 하는데 현재 웹서버를 호스트로 등록 하시면 되요.

다음에 /etc/named.caching-nameserver.conf를 수정하는데 처음 한 번만 수정 하면 다음에 수정 할일이 없습니다.

다음으로 zone 설정 파일에 도메인을 추가 합니다.
/etc/named.rfc1912.zones 도메인 추가 할 때마다 레코드를 추가 해 줘야 합니다.
zone "sir.co.kr" IN { type master; file "sir.co.kr.zone"; allow-update { none; };
sir.co.kr.zone이라는 파일에 도메인 정보를 넣게 되는데 새로 생성하시면 됩니다.
; 세미콜론 뒤에는 주석입니다. serial : 일련 번호 입니다. 존 파일이 수정 될 때마다 숫자가 커져야 합니다.
존 파일을 수정 했는데 이 숫자가 수정 전과 같거나 작으면 다른 네임서버들이 바뀐 내용을 읽어가지 않아요.
refresh : 이건 네임서버들이 이 존파일을 다시 읽어가는 시간입니다. 1H라고 하면 하시간에 한 번씩 이 존 파일을 참조합니다.
내용을 수정 하고 serial을 변경하지 않으면 refresh 시간 만큼 기다려야 합니다. 뒤에 M이나 H가 없으면 초단위입니다.

/var/named/chroot/var/named안에 존 파일을 생성하시고 /var/named에 sl로 심볼링크를 하세요.

존파일 권한이 root:named로 됐는지 꼭 확인 하셔야 합니다.
root로 존파일을 생성하면 root:root로 권한이 되는데 named를 아무리 실행해도 권한이 없어서 존파일을 열지 못하더라구요.

service named resstart 또는 service named start 이렇게 네임서버 실행하시고,
조금 있다가 nslookup으로 제대로 설정 됐는지 확인 해보세요.

나중에 화이트도메인 등록 할 때는 존파일 마지막에 한 줄 추가하는게 있는데 그건 kisa사이트에서 알려줍니다.

Posted by iWithJoy