관리 메뉴

Today is Present.

08 인터넷 수퍼데몬 XINETD와 자동실행 서비스관리 실무 본문

리눅스 학습

08 인터넷 수퍼데몬 XINETD와 자동실행 서비스관리 실무

MorningPhys 2020. 11. 30. 00:37

# 리눅스시스템의 서비스 관리 방식

인터넷수퍼데몬이라고 하는 xinetd와 리눅스 자동실행서비스들을 관리하는 chkconfig, 그리고 ntsysv에 대한 이해를 위해서는 리눅스 시스템이 어떤 과정을 거쳐서 서비스하는가에 대해서 알아야 한다.

먼저 리눅스 시스템에서 서비스하는 관리방식들에는 다음과 같은 것들이 있다. 일반적으로 리눅스서버에서 서비스를 관리하는 방식에는 여러가지가 있으며 대부분의 서비스들은 init 이라는 프로세스에 의해 생성 및 제거된다. 이 외에도 특정 스크립트에 의해 시작/종료/재시작되는 것이 있으며 또한 리눅스 명령어에 의해 직접 시작/종료되는 것들도 있다. 또한 이번 절에서 설명하고 있는 xinetd에 의해 관리되는 서비스들이 있다.

 

이들을 간단히 요약하면 다음과 같다.

1) init 프로세스에 의한 관리

- 시스템부팅에서부터 종료할 때까지의 모든 서비스들에 관여하고 있음

- 모든 독립데몬 서비스들이 init 프로세스로부터 실행됨.

- init 프로세스 설정파일 : /etc/inittab

 

2) 리눅스 명령어(command)에 의한 관리방식

 

3) SYSTEM V 스크립트 방식

- /etc/rc.d/init.d/ 디렉토리에 존재하는 각 서비스 제어파일에 의한 관리방식

 

4) xinetd에 의한 관리방식

- /etc/xinetd.d/ 디렉토리 내의 각 서비스파일들에 의한 관리방식

 

5) chkconfig에 의한 관리방식

- 부팅시에 자동실행할 서비스들을 설정함

- 설정결과는 /etc/rc.d/rcN.d/디렉토리 내의 링크파일의 생성과 파일명으로 나타냄

- xinetd 서비스는 /etc/xinetd.d/디렉토리 내에 있는 파일 내의 설정으로 나타냄

- ntsysv 와 상호 보완적인 관리방식

 

6) ntsysv에 의한 관리방식

- 부팅시에 자동실행할 서비스들을 설정함

- 설정결과는 /etc/rc.d/rcN.d/디렉토리 내의 링크파일의 생성과 파일명으로 나타냄

- chkconfig 와 상호 보완적인 관리방식

 

# 리눅스 시스템의 서비스 제어흐름에 대한 이해

① chkconfig 명령어에서 사용하는 서비스명

② "service 서비스데몬명 start" 에서 사용하는 서비스데몬명

③ /etc/hosts.allow 파일과 /etc/hosts.deny 파일 내에서 사용하는 서비스명

④ /etc/xinetd.d/ 디렉토리 내에서 사용하는 서비스파일명

⑤ /etc/xinetd.d/ 디렉토리 내에 존재하는 각 파일들의 내부에 설정된 "service 서비스명"

⑥ /etc/services 파일에서 사용하는 서비스명

 

규칙 1 : 위의 1) ~ 6) 까지의 각 서비스명들은 동일하게 사용하지 않아도 된다.

규칙 2 : /etc/hosts.allow 파일과 /etc/hosts.deny 파일 내에서 사용하는 서비스이름은 실제 데몬파일명을 지정해야 한다. 예를 들어 "sshd : ALL" 에서 sshd 라는 이름은 /usr/sbin/sshd 라는 파일명에서 가져온 것이다.

규칙 3 : chkconfig 와 ntsysv 는 설정하면 자동으로 이름이 명명되어 나타난다.

규칙 4 : /etc/xinetd.d/ 파일 내에서 사용하는 service 항목이름은 chkconfig 설정시 사용되는 이름 또는 서비스데몬명을 그대로 사용하면 된다.

 

# 리눅스 시스템의 서비스 제어흐름

1) Service Request

2) ethernet

3) kernel

4) init process

5) iptables(Packet Filtering)

6) Stand alone ? -> daemon response -> service -> logging -> Service Request

7) xinetd ? - tcp_wrapper - /etc/hosts.allow, /etc/hosts.deny - /etc/xinetd.d/* - service - logging

8) loging

9) Service Request

 

# 수퍼데몬방식과 독립데몬방식의 서비스 차이점

리눅스시스템에서 서비스되는 모든 서비스들은 다음 2가지 중에 한가지로 서비스되고 있다. 첫번째로 httpd 나 sendmail 등과 같이 그 자체적으로 항상 메모리에 상주하여 서비스 요청시 실시간으로 응답하는 독립방식 서비스가 있고, 두번째는 xinetd 라는 수퍼데몬에 의해서 실행되고 제어되는 xinetd 수퍼데몬방식의 서비스로서 대표적으로는 telnet과 rsync 등이 있다.

 

xinetd 서비스

1) xinetd 수퍼데몬에 의해 제어되는 서비스들의 데몬

2) 필요할 때 xinetd 에 의해 수행됨

3) xinetd에 의해 불리워진 후에 서비스 완료 후에는 자동 종료됨

4) 독립방식에 비해 상대적으로 느림

5) "/etc/xinetd.d/서비스명" 으로 된 xinetd 제어파일이 존재함

6) tcp_wrapper 에 의해 접근제어됨. /etc/hosts.allow, /etc/hosts.deny 파일로 접근제어 설정

 

standalone 서비스

1) 독립적으로 실행되는 서비스들의 데몬

2) 독립적인 서비스를 위하여 항상 독립적으로 수행됨

3) 독립적인 서비스를 위해서 항상 메모리에 독립데몬으로 상주해 있음

4) xinetd 방식에 비해 상대적으로 빠름

5) xinetd 방식에 비해 자원사용이 비효율적임(자원사용이 많음)

6) 대부분 "/etc/rc.d/init.d/서비스명" 등과 같은 파일명으로 존재함

7) tcp_wrapper 와 무관하지만 접근제어를 할 수도 있음

 

공통

/etc/syslog.conf 파일의 설정에 따름. 대부분 /var/log 파일에 로깅됨

 

참고

독립적으로 실행되는 데몬들도 xinetd 환경으로 변경할 수 있으며, 반대로 xinetd 환경에서 서비스되는 데몬들도 독립적인 실행모드로 변경할 수 있음

sshd 서비스의 경우 standalone 이지만 /etc/hosts.allow, /etc/hosts.deny 의 접근제어를 받음.

 

먼저 stand alone 모드로 실행이 되는 데몬은 독립적으로 실행되며 항상 메모리에 상주하여 서비스요청이 있을 때 언제든 바로 응답한다. 즉 빠른 응답속도를 요하는 경우에 이 모드를 이용한다. 단점으로는 메모리에 항상 상주해 있으므로 메모리점유로 인하여 서버부하를 준다는 점이다.

Stand Alone 모드로 서비스되는 대표적인 데몬으로는 다음과 같은 것들이 있다.

- httpd

- sendmail

- named

- xinetd(xinetd 자체는 독립방식 서비스를 함)

- 기타

 

반면 xinetd 모드로 실행이 되는 데몬은 xinetd 라는 특별한 데몬(인터넷 수퍼데몬)에 의해 관리되며, 필요한 경우에만 메모리로 적재(load)되어 실행이 되어 응답을 한다는 것이다. 즉 빠른 응답속도를 요하지 않는 경우에 이 모드를 이용한다. 단점으로는 응답속도가 standalone 보다는 상대적으로 느리다는 것이고 장점으로는 메모리에 항상 상주해 있는 것이 아니므로 standalone 모드보다는 서버부하를 상대적으로 줄일 수 있다는 점이다.

xinetd 모드로 서비스되는 대표적인 데몬으로는 다음과 같은 것들이 있다.

- ipop3d

- telnetd

- rsync

- ftpd

- 기타

 

# 인터넷 수퍼데몬(xinetd)의 특징

1) 각각의 서비스별로 별도의 파일에 설정이 가능함(/etc/xinetd.d/* 파일들)

2) xinetd 에서 가지고 있던 접근제어기능을 가지고 있음

3) tcp_wrapper 를 내장하고 있기 때문에 접근제어를 할 수 있음

4) timeout 설정으로 서비스 접근제어를 할 수 있음

5) 접속시도 횟수로 접근제어를 할 수 잇으므로 무차별 서비스거부공격(Dos)을 방지할 수 있음

6) 동일한 IP를 가진 호스트에서 동시 접속수를 제어하여 접근제어를 할 수 있음

7) 로그파일의 크기를 제한할 수 있음

8) xinetd 에서 제어되는 각 서비스들에 대한 syslog 로깅 레벨 설정가능

9) 접속하는 클라이언트들의 서비스 이용시간을 기록할 수 있음

10) 서비스를 거부하거나 서비스 접근제어가 되었을 경우에 상세로그를 기록함

 

다음은 xinetd 수퍼데몬 서비스 파일에 대한 주의사항이다.

 

앞서 충분히 설명하였듯이 xinetd 는 외부에서 서비스 요청이 있을 때 /etc/xinetd.d/ 디렉토리 내의 각 서비스파일들에 정의되어 있는 내부 프로그램을 실행시켜주는 역할을 한다. 예를 들어 xinetd 가 없다면 ftp, telnet 데몬들은 자기들을 호출하는가를 항상 확인해야 한다. 하지만 xinetd 가 그 역할을 대신해서 해당 서비스의 요청이 들어올 때마다 요청된 데몬을 실행시켜 준다.

 

여기서 주의해야 할 점은 /etc/xinetd.d/ 디렉토리 내의 서비스파일들에 등록되어 잇는 데몬들이 root 계정으로 실행되고 있는지 꼭 확인해봐야 한다는 점이다. 만약 그렇지 않다면 의심을 해보아야 한다. 그리고 /etc/xinetd.d/ 디렉토리의 각 서비스파일들의 퍼미션에서 일반 유저들에게 실행은 물론이고 읽기권한까지 빼버려야 한다. 이 파일이 일반유저들에게 읽기 권한이 있다면 해당서버에서 어떤 서비스를 하고 있는지를 모두 알 수 있기 때문에 실행파일의 위치까지도 파익이 가능하다는 것이다. 더욱 우려되는 것은 서버관리자의 실수든 해킹된 경우든 /etc/xinetd.d/ 내의 파일들에게 쓰기(write) 권한이 설정되어 잇다면 어떤 프로그램이든지 만들어서 이 파일에 등록해 두면 root 의 권한으로 실행이 가능하게 된다. 각별히 주의해야 할 사항이다.

 

# 수퍼데몬 xinetd 방식의 서비스 흐름(예 telnet 요청시)

① 외부에서 telnet 연결요청(서비스의 요청)이 들어온다.

② xinetd 데몬은 외부에서 요청된 서비스를 tcp_wrapper 에게 넘겨준다.

③ tcp_wrapper 는 /etc/hosts.allow 와 /etc/hosts.deny 파일의 설정을 확인하여 해당 요청자의 접근을 허용할 것인지? 허용하지 않을 것인지? 를 결정한다.

④ ③의 결정에 의해 허가된 요청일 경우에 /etc/syslog.conf 에 설정되어 있는 /var/log/secure 파일에 해당 접속에 대한 정보를 기록하고 /etc/xinetd.d/telnet 파일을 불러들여서 서비스를 연결한다. 이 때 /etc/xinetd.d/telnet 내의 server 지시자행에 설정되어 있는 telnet 데몬의 위치를 찾아서 요청을 처리하게 된다.

⑤ ③의 검사에 의해 허가되지 않은 요청일 경우에는 /etc/syslog.conf 파일에 설정되어 있는 /var/log/secure 파일에 허가되지 않은 접속이 있었다는 로그를 남기고 접속요청을 거부하게 된다.

 

# xinetd 서비스 관련 파일들

 - /etc/xinetd.conf : xinetd 서비스에 공통적으로 적용되는 주된 설정 파일(Top Level Config File)

 - /etc/xinetd.d/파일들 : xinetd 기반 서비스들의 개별 설정파일들

 - /usr/sbin/xinetd : xinetd 데몬파일

 - /usr/sbin/tcpd : tcp_wrapper 데몬파일

 - /etc/rc.d/init.d/xinetd : xinetd 시작/종료 스크립트 파일(start/stop/restart)

 - /etc/hosts.allow : 서비스별 허용할 호스트 또는 IP 리스트(tcp_wrapper)

 - /etc/hosts.deny : 서비스별 거부할 호스트 또는 IP 리스트(tcp_wrapper)

 - /etc/syslog.conf : 시스템로그 설정파일

 - /var/log/secure : tcp_wrapper 로그파일(접근기록 파일)

 - /etc/services : 서비스포트 설정파일

 - /etc/protocols : 프로토콜 설정파일

 

/etc/xinted.conf 파일은 xinetd 의 최상위 설정파일로서 "tep_level configuration file" 이라고 한다. /etc/xinetd.d/ 디렉토리 내의 각 서비스 설정파일들에 대하여 global 하게 영향을 주게 된다. 즉 개별설정 파일에 개별적으로 존재하지 않는 설정항목들에 대해서는 기본적으로 적용될 항목들이 설정되어 있는 파일이다.

 

# 부팅시 자동시작할 서비스를 설정하는 ntsysv 활용법(= system-config-services)

[root@localhost ~]# ntsys --level 3

[root@localhost ~]# ntsys --level 5

[root@localhost ~]# ntsys --level 35

[root@localhost ~]# ntsys --level 016

[root@localhost ~]# ntsys --level 2345

 

# 런레별별 자동실행할 서비스를 설정하는 chkconfig 활용법

chkconfig 는 /etc/rc.d/rcN.d 의 각 디렉토리에 있는 S로 시작하는 링크파일과 K로 시작하는 링크파일을 생성/삭제함으로써 부팅시에 자동 실행할 서비스들을 결정할 수 있다. 즉 ntsysv 에서와 마찬가지로 리눅스시스템의 각각의 런레벨에서 부팅할 때에 자동 실행하도록 할 서비스들을 설정할 수 있다.

[root@localhost ~]# chkconfig --list // chkconfig 로 관리되는 자동실행 서비스리스트

[root@localhost ~]# chkconfig --list | grep httpd

[root@localhost ~]#

[root@localhost ~]# chkconfig --add httpd

[root@localhost ~]#

[root@localhost ~]# chkconfig --list | grep httpd

[root@localhost ~]# ls -l /etc/rc.d/rc3.d | grep httpd

[root@localhost ~]# chkconfig --list | grep httpd

[root@localhost ~]# chkconfig --del httpd

[root@localhost ~]#

[root@localhost ~]# chkconfig --list | grep httpd

[root@localhost ~]#

[root@localhost ~]# ls -l /etc/rc.d/rc3.d | grep httpd

[root@localhost ~]#

 

# 해당 런레벨별 작동 중인 서비스 조회

[root@localhost ~]# chkconfig --list | grep 3:on

 

# 부팅시 특정서비스 자동실행 설정하기

[root@localhost ~]# chkconfig vsftpd on

[root@localhost ~]# ls -l /etc/rc.d/rc3.d | grep vsftpd

lrwxrwxrwx 1 root root 16 Mar 28 08:37 S60vsftpd -> ../init.d/vsftpd 

// S 다음의 숫자 60은 시작순서

[root@localhost ~]#

 

# 부팅시 특정서비스 자동실행되지 않도록 설정하기

[root@localhost ~]# chkconfig vsftpd off

[root@localhost ~]# ls -l /etc/rc.d/rc3.d | grep vsftpd

lrwxrwxrwx 1 root root 16 Mar 28 08:37 K50vsftpd -> ../init.d/vsftpd 

[root@localhost ~]#

 

# 런레벨별 부팅시 자동실행과 자동실행되지 않도록 설정하기

[root@localhost ~]# chkconfig --level 35 httpd on

[root@localhost ~]#

[root@localhost ~]# chkconfig --list httpd

[root@localhost ~]# chkconfig --level 35 httpd off

[root@localhost ~]#

[root@localhost ~]# chkconfig --list httpd

 

# 여러 서비스를 관장하여 수퍼데몬이라 불리는 xinetd 서비스 중 어떤 서비스가 ON/OFF 일까?

[root@localhost ~]# chkconfig --list | awk '/xinetd based services/ ,/""/'

728x90
반응형