Xinetd

2001. 3. 28

±è¿µÁ÷, yjkim@certcc.or.kr

1. xinetd¶õ?

xinetd - Extended Internet Services daemon

xinetd´Â inetdÀÇ ¹®Á¦Á¡µéÀ» º¸¿ÏÇÏ°í ±â´ÉÀÌ Ãß°¡µÈ È®ÀåÆÇÀ̶ó°í ÇÒ¼ö ÀÖÀ¸¸ç, °ü·ÃÈ­ÀϵéÀÇ ±¸¼ºÀ̳ª ¼³Á¤¸é¿¡¼­ ´Ù¾çÇÑ ¿É¼ÇÀ» À¶Å뼺ÀÖ°Ô Á¦°øÇÏ°í ÀÖ¾î Á¢±Ù¼³Á¤À̳ª ±âŸ¼³Á¤ÀÌ ½±°Ô µÇ¾îÀÖ´Ù. ÇöÀç redhat 7.0¿¡¼­´Â ±âº»ÀûÀ¸·Î xinetd°¡ ¼³Ä¡µÇ°í ÀÖ´Ù.

xinetdÀÇ ÃֽŹöÁ¯À̳ª ÃÖ±Ù³»¿ëµéÀº xinetdÀÇ È¨ÆäÀÌÁö¸¦ ÅëÇØ È®ÀÎÇÒ¼ö ÀÖ´Ù.

(http://www.xinetd..org)

2. xinetdÀÇ ±â´É

±âÁ¸ÀÇ inetd¿Í tcpd°¡ Áö¿øÇÏ´Â ±â´É°úÀÇ Â÷ÀÌÁ¡°ú Ãß°¡µÈ ºÎºÐÀ» ¾Ë¾Æº¸ÀÚ

1) Á¢±Ù Á¦¾î

-. configure½Ã libwrap ¿É¼ÇÀ» »ç¿ëÇϸé tcp_wrapper¿¡¼­ »ç¿ëÇÏ´Â hosts.allow, denyÆÄÀÏÀ» »ç¿ëÇÏ¿© Á¢±ÙÁ¦ÇÑÀ» ÇÒ ¼ö ÀÖ´Ù. ¹°·Ð ¿É¼ÇÀ» ÁöÁ¤ÇÏÁö ¾Ê°í ±âÁ¸ inetd.conf¿¡¼­Ã³·³ ¼³Á¤ÇÏ¿© tcpdÀÇ ±â´ÉÀ» »ç¿ëÇÒ¼öµµ ÀÖ´Ù.
-. ½Ã°£¿¡ ±Ù°ÅÇÑ Á¢±ÙÁ¦ÇÑÀ» °É¼ö ÀÖ´Ù.

2) DoS°ø°Ý ¹æÁö

-. ¿¬°á¿äû¿¡ ´ëÇÑ Á¦ÇÑÀ» µÑ¼ö°¡ ÀÖ¾î port bomb¿¡ Àû´çÇÑ ÀÀ´äÀ» ÇÒ ¼ö ÀÖ´Ù.
-. ·Î±×È­ÀÏÀÇ »çÀÌÁî Á¦ÇÑÀ» µÑ¼öÀÖ¾î µð½ºÅ©°¡ fullµÇ´Â °ÍÀ» ¸·À»¼ö ÀÖ´Ù.

3) È®ÀåµÈ ·Î±ë±â´É

-. ¼­ºñ½ºº°·Î syslogÀÇ ¼³Á¤À» ÇÒ ¼ö ÀÖ´Ù.
-. Á¢¼Ó ½ÃÀ۽ð£°ú Á¾·á½Ã°£À» ±â·ÏÇÒ ¼ö ÀÖ´Ù. µû¶ó¼­ »ç¿ëÀÚ°¡ ¼­ºñ½º¸¦ ÀÌ¿ëÇÑ ½Ã°£À» üũÇÒ¼ö ÀÖ´Ù.
-. Á¢¼Ó¿¡ ½ÇÆÐÇÑ ±â·Ï¿¡ ´ëÇØ Á»´õ ¸¹Àº ·Î±×¸¦ ±â·ÏÇÒ¼ö ÀÖ´Ù.

4) ¿ø°Ý È£½ºÆ®·ÎÀÇ ¼­ºñ½º Àü´Þ

-. TCP streamÀ» ´Ù¸¥ È£½ºÆ®·Î Àü´ÞÇÏ´Â ±â´É. NAT¿Í °°ÀÌ ¿ÜºÎ¿¡¼­ Á¢±ÙÇÒ¼ö ¾ø´Â °æ¿ì xinetd¸¦ ÀÌ¿ëÇÏ¿© ³»ºÎÀÇ ¼­¹öµµ ´Ù¸¥ È£½ºÆ®¿¡°Ô ¼­ºñ½º¸¦ ÇÒ¼öÀÖ´Ù.

5) IPv6 Áö¿ø

-. xinetd 2.1.8.8pre ¹öÀüµéÀº IPV6¸¦ Áö¿øÇÑ´Ù.

6) »ç¿ëÀÚº° ¼­ºñ½º Â÷µîÀû¿ë

-. »ç¿ëÀÚÀÇ ¿¬°á»óÅ¿ʹ »ó°ü¾øÀÌ ¸Å¹ø ´Ù¸¥ ¹è³Ê¸¦ º¸¿©ÁÙ ¼ö ÀÖ´Ù.

3. ¼³Ä¡ ¹× ¼³Á¤

1) ¼³Ä¡

xinetdÀÇ ¼³Ä¡´Â xinetÀÇ È¨ÆäÀÌÁö¿¡¼­ ¼Ò½º³ª rpmÈ­ÀÏÀ» ¸ðµÎ ±¸ÇÒ¼ö ÀÖÀ¸¸ç ./configure, make, make installÀÇ ÀϹÝÀûÀÎ ¼ø¼­¸¦ µû¸¥´Ù. ÄÄÆÄÀϽà ¼¼°¡ÁöÀÇ ¿É¼ÇÀ» ¼±ÅÃÇÏ¿© ÀÖÀ¸¸ç ¿É¼Ç¿¡ µû¸¥ ±â´É¼±ÅÃÀ» Çϵµ·Ï ÇÑ´Ù. ¿É¼Ç¿¡ ´ëÇÑ ¼³¸íÀº ¾Æ·¡¿Í °°´Ù

╀ --with-libwrap

: xinetdÀÇ ÄÄÆÄÀϽà libwrapÀ» Áö¿øÇϵµ·Ï ÄÄÆÄÀÏ ÇÒ¼öÀÖÀ¸¸ç, À̶§´Â /etc/hosts.allow¿Í hosts.deny ÆÄÀÏÀ» ÂüÁ¶ÇÏ¿© tcpdÀÇ ±â´ÉÀ» ±×´ë·Î »ç¿ëÇÒ¼ö ÀÖ´Ù. (¿¹1)

(¹°·Ð libwrap ¿É¼ÇÀ» ¼±ÅÃÇÏÁö ¾Ê°í tcpd¸¦ »ç¿ëÇÏ¿© ÀϹÝÀûÀÎ inetd.conf¿¡¼­ ¼³Á¤Çß´ø°Íó·³ ÇÒ¼öµµ ÀÖ´Ù.)

╀ --with-loadavg

: ¼­¹öÀÇ ÃÖ´ë½ÇÇà ¼³Á¤¿É¼ÇÀ» Á¶Á¤ÇÑ´Ù. ¼­¹ö¿¡ ¿À¹ö·Îµå°¡ °É·ÈÀ» ¶§ ÀÌ ¿É¼ÇÀ» ÀÌ¿ëÇÏ¿© ÀϺΠ¼­ºñ½º¸¦ Áß´ÜÇÒ¼ö ÀÖ´Ù. ÀÌ ¿É¼ÇÀº ¸î¸î Á¾·ùÀÇ DoS°ø°ÝÀ» ¸·´Âµ¥ °¡Àå Áß¿äÇÑ ¿É¼ÇÀÌ´Ù.

╀ --with-inet6

: IPV6¸¦ ÀÌ¿ëÇÏ°íÀÚ ÇÑ´Ù¸é ÀÌ ¿É¼ÇÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù. IPv4¿Í IPv6ÀÇ ¿¬°áÀº Á¦¾îÇÒ ¼ö ÀÖÁö¸¸ IPv4 ÁÖ¼ÒµéÀº IPv6ÀÇ Çü½ÄÀ¸·Î ¹Ù²î¾îÁø´Ù.

xinted¸¦ ½ÃÀÛÇϱâÀü¿¡ inetd¸¦ ¸ØÃâ ÇÊ¿ä´Â ¾ø´Ù. ÇÏÁö¸¸, ±×·¸°Ô ÇÏÁö¾Ê´Â °ÍÀº ¾çÂÊ µ¥¸óÀÇ µ¿ÀÛ¿¡ ¹®Á¦°¡ ÀÖÀ»¼öµµ ÀÖÀ¸´Ï °¡´ÉÇÑ ¾î´À ÇÑÂÊÀ» Á¤ÁöÇÑÈÄ ½ÇÇàÇϵµ·Ï ÇؾßÇÑ´Ù.

2) ¼³Á¤

xintedÀÇ ¼³Á¤³»¿ëÀº Å©°Ô default¿Í service¿¡ ´ëÇÑ ³»¿ëÀ¸·Î ±¸ºÐµÈ´Ù.

redhat 7.0¿¡¼­´Â defaultºÎºÐÀº /etc/xinetd.conf¿¡, service¿¡ ´ëÇÑ ³»¿ëµéÀº xinetd.conf¿¡ µû·Î ¼³Á¤ÇÏ¿© /etc/xinetd.d µð·ºÅ丮¿¡ ¼­ºñ½ºº°·Î ¼³Á¤È­ÀÏÀ» ÁغñÇØ ³õ°í ÀÖ´Ù.

¸ô·Ð default¿Í service¿¡ ´ëÇÑ ¼³Á¤Àº xinetd.conf¿¡ °°ÀÌ ±âÀçÇÒ¼ö ÀÖÀ¸¸ç ÀÌ´Â ½Ã½ºÅÛ °ü¸®ÀÚÀÇ ÃëÇâ¿¡ µû¶ó »ç¿ëÇÒ¼ö ÀÖ´Ù.

¾Æ·¡´Â redhat 7.0¿¡¼­ ±âº»ÀûÀ¸·Î ¼³Á¤µÇ´Â xinetd.conf ÆÄÀÏÀÇ ³»¿ëÀÌ´Ù.

¿¹Á¦ 1) xinetd.confÀÇ ¼³Á¤¿¹

[root@violet93 /root]# more /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 RECORD
}
includedir /etc/xinetd.d

¶Ç, ±âÁ¸ÀÇ inetd.confÀÇ ³»¿ëÀ» º¯È¯ÇÏ´Â À¯Æ¿¸®Æ¼ ¶ÇÇÑ Áö¿øÇÏ°í Àִµ¥ itox¿Í xconv.plÀ» »ç¿ëÇÏ¿© ÀÛ¾÷À» ÇÒ¼öÀÖÁö¸¸ Á¤È®ÇÑ º¯È¯³»¿ëÀ» »ý¼ºÇÏÁö´Â ¾Ê°í ÀÖ¾î °¡´ÉÇÑ ¼¼ºÎ¼³Á¤Àº Á÷Á¢ ÀÛ¾÷ÇÏ´Â °ÍÀ» ±ÇÀåÇÑ´Ù. itox ÇÁ·Î±×·¥Àº ¾ÆÁ÷ À¯ÁöµÇ°í´Â ÀÖÁö¸¸ ´õ ÀÌ»ó °³¹ßÀº µÇÁö¾Ê°í ÀÖÀ¸¸ç, xcobv.plÀº °á°ú¹°À» ´Ù½Ã ¼öÁ¤µÇ¾î¾ß ÇϴµîÀÇ ¹®Á¦°¡ ÀÖ´Ù.

¿¹Á¦ 2) inetd.conf¸¦ xinetd.conf·Î º¯È¯

/usr/sbin/xconv.pl < /etc/inetd.conf > /tmp/xinetd.conf

4. »ç¿ë¿¹Á¦

¿¹1) telnet¼­ºñ½º¿¡¼­ ±âÁ¸ÀÇ tcp_wrapper¸¦ »ç¿ëÇÒ °æ¿ì.

service telnet
{
flags = REUSE NAMEINARGS
protocol = tcp
socket_type = stream
wait = no
user = telnetd
server = /usr/sbin/tcpd
server_args = /usr/sbin/in.telnetd
}

¿¹2) imapÀÇ ¼³Á¤¿¹

: À§¿Í °°ÀÌ tcp wrapperÀÇ ¼³Á¤È­ÀÏÀ» »ç¿ëÇÏÁö ¾Ê°í Á÷Á¢ ¼­ºñ½ºº°·Î ip¿¡ ´ëÇÑ Á¢±ÙÁ¦ÇÑÀ» ¼³Á¤ÇÒ¼ö ÀÖ´Ù.

service imap
{
socket_type = stream
protocol = tcp
wait = no
user = root
only_from = 198.72.5.0 localhost
banner = /usr/local/etc/deny_banner
server = /usr/local/sbin/imapd
}

¿¹3) telnet¼­ºñ½ºÀÇ ¼³Á¤¿¹

: ¼­ºñ½º Çã¿ë½Ã°£¿¡ ´ëÇÑ Á¦ÇѼ³Á¤À» ÇÑ ¿¹Á¦ÀÌ´Ù. 'instance=5' ¶ó´Â °ÍÀº ÃÊ´ç Çã¿ëÇÏ´Â connectionÀ» ³ªÅ¸³½´Ù.

[root@violet93 xinetd.d]# more 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
access_times = 08:00-17:00
instances = 5
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}

¿¹3) xinetd.conf¿¡ default ¼³Á¤³»¿ë°ú service¿¡ ´ëÇÑ ¼³Á¤À» °°ÀÌ ±âÀçÇÔ.

# Sample configuration file for xinetd
#
defaults
{
instances = 25
log_type = FILE /var/log/servicelog
log_on_success = HOST PID
log_on_failure = HOST RECORD
# only_from = 128.138.193.0 128.138.204.0
# only_from = localhost
disabled = tftp
}
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
redirect = 192.168.1.1 23
bind = 127.0.0.1
log_on_failure += USERID
}
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
bind = 192.168.1.11
log_on_failure += USERID
}
#service chargen
#{
# type = INTERNAL
# id = chargen-stream
# socket_type = stream
# protocol = tcp
# user = root
# wait = no
#}
service xadmin
{
type = INTERNAL
socket_type = stream
protocol = tcp
user = root
wait = no
port = 7000
}

4. Âü°í¹®¼­ ¹× »çÀÌÆ®

* xinetd ȨÆäÀÌÁö (http://www.xinetd.org)
* xinetd - Frederic Raynal (http://www.linuxfocus.org/English/November2000/article175.shtml)
* xinetd - FAQ (http://www.xinetd.org/faq.html)
* An Unofficial Xinetd Tutorial - curator, The shimoo Griup (http://www.macsecurity.org/resouces/xinetd/tutorial.shtml)