강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

인터넷 수퍼대몬(inetd) 관리

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle09.gif

1. INETD 수퍼데몬이란?

 inetd는 인터넷수퍼데몬이라고 하는 것으로 외부 네트웍의 요청이 있을 때 /etc/inetd.conf에 등록되어 있는 내부 프로그램인 인터넷서비스들의 데몬을 실행시켜주는 역할을 한다. 예를들어 inetd가 없다면 ftp, telnet데몬들은 자기들을 호출하는가를 항상 확인해야한다. 하지만 inetd가 그 역할을 대신해서 해당 서비스의 요청이 들어올때면 해당데몬을 실행시켜준다.

 

여기서 주의해야 하는 것은 /etc/inetd.conf에 등록되어 있는 데몬들이 항상 root계정으로 실행되고 있는지 항상 확인을 해보아야한다. 만약 그렇지 않다면 의심을 해보아야 한다.  그리고 /etc/inetd.conf의 퍼미션에서 일반유저들에게 실행은 물론이고 읽기권한까지도 빼버려야한다. 이 파일에 일반유저들에게 읽기 권한이 있다면 해당서버에서 어떤서비스를 하고 있는지를 모두 알수가 있기때문이며 실행파일의 위치까지도 파악이 가능하다는 것이다.  더욱 우려되는 것은 서버관리자의 실수든 해킹된 것이든 /etc/inetd.conf에 write권한이 설정되어 있다면 어떤프로그램이든지 만들어서 이 파일에 등록해 두면 root의 권한으로 실행이 가능하게된다. 이 얼마나 위험천만한 일인가?  

 

 

2. /etc/inetd.conf를 이해하자.

자, 이번에는 inetd.conf파일의 정보를 보는 방법을 확인해 보자.

ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  in.ftpd -l -a

telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd

#

# Shell, login, exec, comsat and talk are BSD protocols.

#

shell   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rshd

#login  stream  tcp     nowait  root    /usr/sbin/tcpd  in.rlogind

#exec   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rexecd

#comsat dgram   udp     wait    root    /usr/sbin/tcpd  in.comsat

talk    dgram   udp     wait    root    /usr/sbin/tcpd  in.talkd

ntalk   dgram   udp     wait    root    /usr/sbin/tcpd  in.ntalkd

#dtalk  stream  tcp     waut    nobody  /usr/sbin/tcpd  in.dtalkd

#

# Pop and imap mail services et al

#

#pop-2   stream  tcp     nowait  root    /usr/sbin/tcpd ipop2d

pop-3   stream  tcp     nowait  root    /usr/sbin/tcpd  ipop3d

imap    stream  tcp     nowait  root    /usr/sbin/tcpd  imapd

 

위의 경우는 tcp_wrapper를 사용하는 경우이다. tcp_warpper에 대해서는 아래에서 자세히 설명하도록 하겠다.  위의 예에서 보듯이 inetd.conf 파일내에 설정되어 있는 행들은 모두 7개의 컬럼으로 되어있다.  이들에 대한 설명을 해보면 다음과 같다.

 

service : 서비스이름. /etc/services에 등록되어 있어야한다.

socket type : TCP일 경우에는 stream이며, UDP일 경우에는dgram이라고 명시되어 있다.

protocol : tcp 혹은 udp의 프로토콜을 명시하며 /etc/protocols에 등록되어 있어야 한다.

wait flag : inetd가 서비스 요청을 받은 경우, 이후에 즉시 또 다른 요청을 처리할 것인지 아닌지의 여부에 따라 nowait 또는 wait로 구분한다. stream일 경우에는 반드시 nowait이어야 한다.

login name : 어떤 사용자의 권한으로 프로그램을 수행시켜 줄 것인지 명시한다.

server : 어떤 응용프로그램을 수행시킬 것인지 명시한다. 절대경로를 모두 명시하여야 한다.

argument : 응용 프로그램의 인자를 지정하며 5개까지 가능하다. 일반적으로 argv[0]는 프로그램 자신의 이름이 되므로 첫 번째 인자는 응용 프로그램 자신의 이름이 된다.

 

3. inetd의 시작과 종료

첫 번째 방법

[root@hlxsvr /]# ps -ef | grep inet

root      2212     1  0 11:22 ?        00:00:00 inetd

[root@hlxsvr /]# kill -HUP 2212

 

두 번째 방법

[root@hlxsvr /]# cd /etc/rc.d/init.d

[root@hlxsvr init.d]# ./inet stop

Stopping INET services:                                 [  OK  ]

[root@hlxsvr init.d]#

[root@hlxsvr init.d]# ./inet start

Starting INET services:                                  [  OK  ]

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  73 명