본문 바로가기
컴퓨터 & IT (Computer & IT)/Linux

[Linux] Daemon 및 xinetd

by Physics 2020. 11. 13.
728x90

1. 데몬이란? 

• 시스템에 관련된 작업을 하는 후위 프로세스 (Background process)
• 데몬의 예: telnet, ftp, http, sendmail,... 
• 대부분의 데몬들은 시스템에 관련된 작업을 하며, 서비스 요청이 없을 때에는 후위 프로세스로써 유휴 (idle) 상태에 들어가게 되며, 시스템의 CPU를 차지하진 않지만, 메모리와 기타 자원을 차지하게 된다. 
• 윈도우의 service와 유사함 

2. 슈퍼데몬 (inet or xinet) 또는 인터넷 슈퍼 데몬 (internet super Daemon)

다른 데몬들과 달리 슈퍼 데몬들은 1) 리눅스 서버에서 서비스되는 여러가지 데몬들을 제어 및 2) 각각의 서비스를 연결을 담당한다.

3. 데몬의 두 가지 실행모드 

standalone xinet
• 독립적으로 실행되고 항상 메모리에 상주하여 서비스 요청이 있을 때에 언제든지 바로 응답한다. 
• 빠른 응답속도를 요구하는 경우 해당 모드를 사용 
• 슈퍼 데몬 역시 standalone 모드로 실행됨 
• 실행위치: /etc/init.d 
• standalone으로 실행되는 데몬의 예
  sesndmail, apache, mysqld,....
• 단점: 항상 메모리에 상주해 있으므로, 메모리 점유로 인한 서비스 부하를 줌 
• 슈퍼 데몬이라고 불리며, 다른 데몬들의 상위에 존재 
• 필요한 경우에만 메모리에 적재되기 때문에 빠른 응답을 요구하지 않는 경우에 이용된다
• 응답속도가 standalone 모드보다 느리지만 서버 부하를 상대적으로 줄일 수 있다. 
• 실행 위치: /etc/xinetd.d 
• xinet의 예: telnet, ftp, login, auth, tcpd,...
• 설치 명령어: $sudo apt-get install xinetd 

※ 커널 2.2까지는 inetd 데몬이 서비스를 관리하였지만, 커널 2.4 이후부터는 xinetd 데몬이 역활을 수행함  

4. /etc/inetd.conf

- 해당 파일의 예시 

$vim /etc/inetd.conf
#service	socket_type	protocol	wait_flag	login_name	server		argument     
ftp		stream		tcp		nowait		root		/usr/sbin/tcpd	in.ftpd -i -a 
telnet		stream		tcp		nowait		root		/usr/sbin/tcpd	in.telnet         

- 설정 파일의 서비스 내용

속성 의미/값
service • 서비스 이름 
• /etc/services에 등록이 되어있어야 함  
socket_type • tcp일 경우, stream이며, UDP일 경우 dgram이라고 명시해야 함 
protocol • tcp 혹은 udp 프로토콜을 명시해야 하며, /etc/protocols에 등록 되어 있다. 
• /etc/services 파일에서 설정한 프로토콜과 일치해야 함 
wait_flag • inet가 서비스 요청을 받은 경우, 이후 즉시 또 다른 요청을 처리할 것인지 아닌지의 여부에 따라 nowait 혹은 wait로 구분한다. 
   - 1) stream (tcp) 인 경우: nowait으로 설정
   - 2) udp (dgram) 인 경우: wait으로 설정 
login_name • 어떤 사용자의 권한으로 프로그램을 실행시켜줄 것인지르 명시 

- 일반적으로 우분투에서는 기본적으로 inetd가 설치되어있지 않으므로 다음과 같은 명령어로 설치한다. 
   • 설치 명령어: $sudo apt-get install openbsd-inetd
   • inetd 재시작: $sudo /etc/init.d/openbsd-inetd restart 

5. xinetd와 관련된 파일들

파일들 파일 내용
/etc/xinetd • xinetd 데몬
• xinetdd 모드에서 실행되는 서비스들은 거의 대부분 tcpd라는 TCP_WRAPPER란 데몬에 의해 접속 제어를 받게 된다
• tcpd (TCP_WRAPPER)의 역활 
   (a) 특정 IP나 도메인으로부터 서버의 telnet, ftp, pop, 등의 접속을 차단할 수 있음 
   (b) 접속 기록이나, 접속 시도 기록을 특정 파일 (/var/log/secure)에 로그를 기록한다.
/etc/xinetd.d • /etc/xinted.d 내의 파일들은 xinetd로 서비스될 파일들이 존재하는 디렉토리이다
/etc/services • 서비스 포트 설정 파일
• 리눅스 서버에서 사용하는 모든 포트들에 대한 정의가 설정되어 있음 
 : 대부분의 해킹 등의 공격시도들이 대부분 알려져 있는 (default) 포트들을 통해 이루어진다.  
  따라서 보안을 위해서 이 파일을 적절히 조절하면, 기본 사용 포트를 변경하여 사용할 수 
  있으므로, 보안성을 높일 수 있다.  
• /etc/services의 예* 
/etc/protocols • 프로토콜 설정 파일
• /etc/services 파일에서 사용되는 프로토콜의 정의가 들어있는 파일  
• 해당 파일에서의 서비스 명은 /etc/services 파일 내의 service_name 필드와 일치해야 한다. 
/etc/syslog.conf • 시스템로그 설정 파일
/usr/sbin/tcpd • tcpd 데몬
/etc/hosts.allow • 서비스별 허용목록 파일 (tcpd)
• /etc/hosts.allow의 예** 
/etc/hosts.deny • 서비스별 거부 목록 파일 (tcpd) 
/var/log/secure • tcpd 로그 파일 (접근 기록 파일)
• tcpd에 의해 접근된 로그와 접근이 허용되지 않은 로그들이 기록된 파일
/etc/rc.d/init.d/xinet.d • xinetd 시작/종료 스크립트 파일

*/etc/services의 예

$vim /etc/services
#service_name   port/types of protocol   alias 
ftp				21/tcp  
fsp				21/udp 

 

** /etc/hosts.allow의 예 

$vim /etc/hosts.allow
# service       #IP or host serviced by daemon        
in.telnetd:      xxx.xxx.xxx.xxx 
in.ftpd:         xxx.xxx.xxx.xxx

 

6. /etc/xinetd.conf

default 설정으로 /etc/xinetd/ 디렉토리 내에 존재하는 inetd 서비스 파일들에 공통적으로 적용하는 설정 내용이 저장

1) /etc/xinetd.conf 예시 

# /etc/xinetd.conf
# pop3의 xinetd 설정파일 예시 
service pop3 
{
     disable          = yes
     socket_type     = stream
     wait             =  no
     user             =  root
     server           =  /usr/sbin/ipop3d
     log_on_success+=  USERID
     log_on_failure+=  USERID
     
}

 

2) 옵션 설명

속성 의미/값
service • 서비스 이름 
• /etc/services 파일에 등록된 이름과 동일해야함 
disable • xinetd의 제어를 받을 것인지 결정
 - yes: xinetd의 제어를 받음 
 - no: xinetd의 제어를 받지 않음 
socket_type • 사용하는 tcp/ip 소켓
 - stream(tcp), dgram(udp), raw, seqpack 중 선택
protocol 서비스가 이용하는 protocol 지정 
server 서비스가 실행될 때, 어떤 위치의 프로그램을 불러와 연결할 것인지 결정 
※ 반드시 절대경로로 지정되어야 함 
port 서비스하는 포트번호. 
※ 반드시 /etc/services에 있는 내용과 일치할 것

 

7. xinetd의 시작과 종료 

xinetd를 구동하거나 종료 및 실행상황을 점검할 수 있는 스크립트 파일은 /etc/rc.d/init.d/xinetd이다. 해당 스크립트는 서버 부팅과 함께 자동으로 실행된다. 

명령어 명령어 내용
/etc/rc.d/init.d/[서비스 이름] start [서비스 이름] 시작
/etc/rc.d/init.d/[서비스 이름] stop [서비스 이름] 종료
/etc/rc.d/init.d/[서비스 이름] restart [서비스 이름] 재시작
/etc/rc.d/init.d/[서비스 이름] status [서비스 이름] 상황정검

 

8. 관련 명령어 

  • 데몬관리도구: chkconfig 
    - 각 데몬의 실행 설정 목록을 보거나 실행할 데몬을 추가하거나 삭제할 수 있음
    - 명령어 1: --list : 실행단계별로 데몬의 실행 여부를 확인하는 옵션
    - 형식: $chkconfig <--level> <name> <on/off/reset> 
  • 그래픽 화면(GUI)의 데몬 관리 도구: --system-config-service 
  • xinetd 재시작: sudo /etc/init.d/xinetd restart

Reference:
[1] https://nextline.tistory.com/55
[2] https://durumul.tistory.com/82

 

 

728x90

댓글