2011. 11. 28. 19:26 Log/Linux
서비스 운영방식 - standalone / inetd(xinetd)
*. 서비스 운영방식은 크게 두가지로 나뉜다.
standalone 방식과 inet 방식이다.
standalone 방식 - 서비스를 하려면 해당 서버가 메모리에 미리 올라와 있어야 한다.
일반적으로 여기에 해당되는 서비스는 sendmail, apache, mysql , name server, nfs 등.
이 방식으로 운영되는 서비스는 /etc/init.d/ 디렉토리 안에 있는 스크립트 파일을 보면 알 수 있다.
서비스 실행 방법
- /etc/init.d/sendmail start => sendmail 서비스 시작
/etc/init.d/sendmail stop => sendmail 서비스 종료
/etc/init.d/sendmail restart => sendmail 서비스 재 시작.
또는 servce sendmail start / service sendmail restart / service sendmail stop
*. 다른 standalone 방식의 서비스도 다 이런식으로 서비스 된다.
xinet 방식 - 이 방식의 서비스는 standalone 방식에 비하면 좀 복잡하다.
standalone 방식과 가장 다른점은 해당 서버가 클라이언트가 서비스 요청할때 그때 자동으로 올라간다는 것이다.
관리자가 서버를 올리거나 내리거나 할 필요가 없고 항상 메모리를 점유하는게 아니므로 편리하고 메모리 사용에
효율적이다.
이방식으로 운영되는 대표적인 서비스는 telnet 이나 pop3 그리고 finger 서비스이다.
이방식으로 운영되는 서비스는 /etc/xinetd.d 디렉토리의 파일을 보면 알 수 있다.
클라이언트가 telnet 으로 접속 시도할 경우
ex)
1. telnet 192.168.10.1 => 디폴트 포트 번호 23 으로 접속시도 한다.
2. xinetd 는 클라이언트가 요청하는 23번 포트가 어떤 서비스인지를 확인한다.
이때 참조하는 파일은 /etc/services 파일이다.
그 파일을 보면 23 번 포트를 사용하는 서비스는 telnet 으로 되어 있다.(기본설정)
3. 그 다음 xinetd /etc/xinetd.conf 를 참조한다. 그리고 마지막줄 includedir 이 있으면
그 디렉토리 안에 있는 모든 파일중 서비스 이름이 telnet 으로 되어 있는 파일을 찾아서
disable=no 로 되어 있으면 거기에 있는대로 텔넷 서버파일을 실행한다.
4. 클라이언트 telnet 이 서버의 telnetd 데몬과 연결이 된다.
*. 클라이언트가 telnet 접속을 끊으면 telnetd 는 메모리에서 자동으로 내려온다.
*. 다른 xinetd 방식의 서비스도 다 이런식으로 서비스 된다.
서비스 실행방법
예를 들어 telnet 서비스를 운영하려면
/etc/xinetd.d/telnet => 이 파일을 편집기로 열어서
disable = yes ====> disable = no
이렇게 변경한다음
/etc/init.d/xinetd restart 또는 service xinetd restart 이렇게 하면 된다.
*. xinetd 를 재실행하는것은 거의 모든 서버 데몬은 메모리로 올라갈때만 설정파일을 참조하기 때문이다.
xinetd 가 메모리로 올라갈때 그때 고친파일을 참조한다. 그렇지 않으면 xinetd 는 여전히 고치기 전의
내용으로 텔넷서비스를 서비스한다.
*. 당연히 부팅할때 자동으로 구동되는 데몬들은 전부 standalone 방식의 데몬이다.
inetd 데몬 프로그램은 거의 모든 유닉스 시스템에서 사용되고 있다.
그러나 redhat 리눅스 7 부터 inetd 를 확장시킨 xinetd 를 사용할 수 있다.
xinetd 는 inetd 와 비교하면 몇가지 부분이 강화되었다.
tcp, udp, rpc 서비스에 대한 접근 제어가 가능
서비스 운영시간을 지정 그 시간에만 서비스가 가능하게 할 수 있다
서비스 접속 기록 형태 세부적으로 설정할 수 있다.
Dos 공격예방을 위한 구동되는 데몬 갯수를 원하는대로 제한할 수 있다.
공식사이트 : http://www.xinetd.org
- 소스파일이나 rpm 파일을 받아서 설치할 수 있다.
아래와 같이 xinet 설치유무를 확인해보고
설치되어 있지 않으면 설치부터 해야 한다.
[root@star xinetd.d]# rpm -qa | grep xinet
xinetd-2.3.13-6
[root@star xinetd.d]#
만약 설치 안되어 있다면 rpm 이나 yum 또는 소스패키지를 내려받아 설치한다.
1. rpm 으로 설치할 경우.
페로다 시디중 3번째 시디를 마운트 시킨다음 xinetd 패키지를 설치하면 된다.
[root@star /]# mount -t iso9660 /dev/cdrom /media/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@star /]# cd /media/cdrom/Fedora/RPMS/
[root@star RPMS]# ls *xinet*
xinetd-2.3.13-6.i386.rpm
[root@star RPMS]# rpm -ivh xinetd-2.3.13-6.i386.rpm
2. yum 으로 설치할 경우
yum install xinetd
*. yum 은 더 간편하지만 인터넷이 사용가능한 상태이어야 하며
인터넷으로 내려받아서 설치하는 것이기 때문에 인터넷 연결상태가 나쁘거나
패키지가 저장된 서버 상태에 따라서설치가 잘 안될 수 있다.
3. 공식사이트에서 소스패키지를 내려받아서 설치할 수 있다.
그러나 이것은 권장하지 않는다. 소스패키지는 설치과정이 번거롭다.
소스 패키지를 내려받아서 설치하는 경우는 세밀한 설정이나 최적화 시키기
위함이다. xinetd 는 굳이 그렇게 설치할 필요는 없다.
xinetd 데몬설정 파일
/etc/xinetd.conf
형식
Default 또는 Service service_name
{
속성 연산자 값
속성 연산자 값
....
}
ex) cat /etc/xinetd.conf
#
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d
# => 주석(comment)
instances : 동시에 실행될 수 있는 같은 타입의 서비스. 이 숫자를 초과할 경우
해당 데몬이 더이상 메모리에 적재되지 못한다.
log_type : 로그기록 설정부분이다. SYSLOG 데몬을 통해서 로그를 남긴다는 의미
log_on_failure : 해당 서버 데몬에 로그시 실패한경우 남기게 될 로그기록.
cps : 서버로 접속하는 연결범위 지정.
includedir : 추가 설정 디렉토리 => 이 디렉토리 안에 있는 파일내용을 포함하라는 의미
ex)
[root@star xinetd.d]# cat telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
}
[root@star xinetd.d]#
socket_type : 서비스 타입이 tcp 기반이면 stream udp 기반이면 dgram 으로 설정해야 한다.
wait : no 이면 동시접속 가능. yes 이면 동시접속 불가.
user : 서버 데몬의 프로세스 소유자를 여기 적혀 있는 계정으로 한다는 의미
server : 서버파일이 있는 경로
disable : 서비스 사용가능 유무. no 이면 서비스 사용 가능, yes 이면 서비스 사용불가.
log_on_failure += USERID : 서비스 접속에 실패할경우 기존 log 설정에 접속에 실패한
사용자 id 를 포함해서 기록한다. 기존 log 설정은 /etc/xinetd.conf 파일에 설정되어 있다
only_from : 서비스를 사용할 수 있는 클라이언트를 지정하기 위한 부분.
ex) only_from 192.168.xxx.xxx/24 => 192.168.xxx.xxx/24 에서만 접속가능함.
ex2)
service ftp
{
socket_type=stream => ftp 서비스는 tcp 기반의 서비스
wait=no => 다수의 사용자가 ftp 서비스에 동시접속 가능
user=root => ftp 서버 데몬(/usr/sbin/in.ftpd)의 프로세스 소유자는 root
server=/usr/sbin/in.ftpd => ftp 서버 데몬 파일의 경로
server_args=-l => ftp 서버가 구동될때 -l 옵션 적용 (/usr/sbin/in.ftpd -l)
instances=4 => ftp 서버 구동 갯수 (최대 4개까지)
access_time=7:00-12:00 13:00-17:00 => ftp 서비스 이용가능 시간
only_from=192.168.10.0/24 => ftp 서비스에 접속할 수 있는 클라이언트 주소
}
*. 이 옵션들이 다 필요한 것은 아니며 여기서 생략해도 되는 것은
server_args, instances, access_time, only_from 이다.
standalone 방식과 inet 방식이다.
standalone 방식 - 서비스를 하려면 해당 서버가 메모리에 미리 올라와 있어야 한다.
일반적으로 여기에 해당되는 서비스는 sendmail, apache, mysql , name server, nfs 등.
이 방식으로 운영되는 서비스는 /etc/init.d/ 디렉토리 안에 있는 스크립트 파일을 보면 알 수 있다.
서비스 실행 방법
- /etc/init.d/sendmail start => sendmail 서비스 시작
/etc/init.d/sendmail stop => sendmail 서비스 종료
/etc/init.d/sendmail restart => sendmail 서비스 재 시작.
또는 servce sendmail start / service sendmail restart / service sendmail stop
*. 다른 standalone 방식의 서비스도 다 이런식으로 서비스 된다.
xinet 방식 - 이 방식의 서비스는 standalone 방식에 비하면 좀 복잡하다.
standalone 방식과 가장 다른점은 해당 서버가 클라이언트가 서비스 요청할때 그때 자동으로 올라간다는 것이다.
관리자가 서버를 올리거나 내리거나 할 필요가 없고 항상 메모리를 점유하는게 아니므로 편리하고 메모리 사용에
효율적이다.
이방식으로 운영되는 대표적인 서비스는 telnet 이나 pop3 그리고 finger 서비스이다.
이방식으로 운영되는 서비스는 /etc/xinetd.d 디렉토리의 파일을 보면 알 수 있다.
클라이언트가 telnet 으로 접속 시도할 경우
ex)
1. telnet 192.168.10.1 => 디폴트 포트 번호 23 으로 접속시도 한다.
2. xinetd 는 클라이언트가 요청하는 23번 포트가 어떤 서비스인지를 확인한다.
이때 참조하는 파일은 /etc/services 파일이다.
그 파일을 보면 23 번 포트를 사용하는 서비스는 telnet 으로 되어 있다.(기본설정)
3. 그 다음 xinetd /etc/xinetd.conf 를 참조한다. 그리고 마지막줄 includedir 이 있으면
그 디렉토리 안에 있는 모든 파일중 서비스 이름이 telnet 으로 되어 있는 파일을 찾아서
disable=no 로 되어 있으면 거기에 있는대로 텔넷 서버파일을 실행한다.
4. 클라이언트 telnet 이 서버의 telnetd 데몬과 연결이 된다.
*. 클라이언트가 telnet 접속을 끊으면 telnetd 는 메모리에서 자동으로 내려온다.
*. 다른 xinetd 방식의 서비스도 다 이런식으로 서비스 된다.
서비스 실행방법
예를 들어 telnet 서비스를 운영하려면
/etc/xinetd.d/telnet => 이 파일을 편집기로 열어서
disable = yes ====> disable = no
이렇게 변경한다음
/etc/init.d/xinetd restart 또는 service xinetd restart 이렇게 하면 된다.
*. xinetd 를 재실행하는것은 거의 모든 서버 데몬은 메모리로 올라갈때만 설정파일을 참조하기 때문이다.
xinetd 가 메모리로 올라갈때 그때 고친파일을 참조한다. 그렇지 않으면 xinetd 는 여전히 고치기 전의
내용으로 텔넷서비스를 서비스한다.
*. 당연히 부팅할때 자동으로 구동되는 데몬들은 전부 standalone 방식의 데몬이다.
inetd 데몬 프로그램은 거의 모든 유닉스 시스템에서 사용되고 있다.
그러나 redhat 리눅스 7 부터 inetd 를 확장시킨 xinetd 를 사용할 수 있다.
xinetd 는 inetd 와 비교하면 몇가지 부분이 강화되었다.
tcp, udp, rpc 서비스에 대한 접근 제어가 가능
서비스 운영시간을 지정 그 시간에만 서비스가 가능하게 할 수 있다
서비스 접속 기록 형태 세부적으로 설정할 수 있다.
Dos 공격예방을 위한 구동되는 데몬 갯수를 원하는대로 제한할 수 있다.
공식사이트 : http://www.xinetd.org
- 소스파일이나 rpm 파일을 받아서 설치할 수 있다.
아래와 같이 xinet 설치유무를 확인해보고
설치되어 있지 않으면 설치부터 해야 한다.
[root@star xinetd.d]# rpm -qa | grep xinet
xinetd-2.3.13-6
[root@star xinetd.d]#
만약 설치 안되어 있다면 rpm 이나 yum 또는 소스패키지를 내려받아 설치한다.
1. rpm 으로 설치할 경우.
페로다 시디중 3번째 시디를 마운트 시킨다음 xinetd 패키지를 설치하면 된다.
[root@star /]# mount -t iso9660 /dev/cdrom /media/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@star /]# cd /media/cdrom/Fedora/RPMS/
[root@star RPMS]# ls *xinet*
xinetd-2.3.13-6.i386.rpm
[root@star RPMS]# rpm -ivh xinetd-2.3.13-6.i386.rpm
2. yum 으로 설치할 경우
yum install xinetd
*. yum 은 더 간편하지만 인터넷이 사용가능한 상태이어야 하며
인터넷으로 내려받아서 설치하는 것이기 때문에 인터넷 연결상태가 나쁘거나
패키지가 저장된 서버 상태에 따라서설치가 잘 안될 수 있다.
3. 공식사이트에서 소스패키지를 내려받아서 설치할 수 있다.
그러나 이것은 권장하지 않는다. 소스패키지는 설치과정이 번거롭다.
소스 패키지를 내려받아서 설치하는 경우는 세밀한 설정이나 최적화 시키기
위함이다. xinetd 는 굳이 그렇게 설치할 필요는 없다.
xinetd 데몬설정 파일
/etc/xinetd.conf
형식
Default 또는 Service service_name
{
속성 연산자 값
속성 연산자 값
....
}
ex) cat /etc/xinetd.conf
#
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d
# => 주석(comment)
instances : 동시에 실행될 수 있는 같은 타입의 서비스. 이 숫자를 초과할 경우
해당 데몬이 더이상 메모리에 적재되지 못한다.
log_type : 로그기록 설정부분이다. SYSLOG 데몬을 통해서 로그를 남긴다는 의미
log_on_failure : 해당 서버 데몬에 로그시 실패한경우 남기게 될 로그기록.
cps : 서버로 접속하는 연결범위 지정.
includedir : 추가 설정 디렉토리 => 이 디렉토리 안에 있는 파일내용을 포함하라는 의미
ex)
[root@star xinetd.d]# cat telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
}
[root@star xinetd.d]#
socket_type : 서비스 타입이 tcp 기반이면 stream udp 기반이면 dgram 으로 설정해야 한다.
wait : no 이면 동시접속 가능. yes 이면 동시접속 불가.
user : 서버 데몬의 프로세스 소유자를 여기 적혀 있는 계정으로 한다는 의미
server : 서버파일이 있는 경로
disable : 서비스 사용가능 유무. no 이면 서비스 사용 가능, yes 이면 서비스 사용불가.
log_on_failure += USERID : 서비스 접속에 실패할경우 기존 log 설정에 접속에 실패한
사용자 id 를 포함해서 기록한다. 기존 log 설정은 /etc/xinetd.conf 파일에 설정되어 있다
only_from : 서비스를 사용할 수 있는 클라이언트를 지정하기 위한 부분.
ex) only_from 192.168.xxx.xxx/24 => 192.168.xxx.xxx/24 에서만 접속가능함.
ex2)
service ftp
{
socket_type=stream => ftp 서비스는 tcp 기반의 서비스
wait=no => 다수의 사용자가 ftp 서비스에 동시접속 가능
user=root => ftp 서버 데몬(/usr/sbin/in.ftpd)의 프로세스 소유자는 root
server=/usr/sbin/in.ftpd => ftp 서버 데몬 파일의 경로
server_args=-l => ftp 서버가 구동될때 -l 옵션 적용 (/usr/sbin/in.ftpd -l)
instances=4 => ftp 서버 구동 갯수 (최대 4개까지)
access_time=7:00-12:00 13:00-17:00 => ftp 서비스 이용가능 시간
only_from=192.168.10.0/24 => ftp 서비스에 접속할 수 있는 클라이언트 주소
}
*. 이 옵션들이 다 필요한 것은 아니며 여기서 생략해도 되는 것은
server_args, instances, access_time, only_from 이다.
'Log > Linux' 카테고리의 다른 글
ftp 서비스 - server (0) | 2011.11.28 |
---|---|
ftp 서비스 - client (0) | 2011.11.28 |
리눅스 네트워크 (0) | 2011.11.28 |
boot procedure(부팅 진행과정) (0) | 2011.11.28 |
shell 및 shell script (0) | 2011.11.28 |