본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어

+++++++++++++++++++++++++++++++++++++++++++++++++++++++


출처 : PowerComputing OF BlueStorm | BlueStorm
+++++++++++++++++++++++++++++++++++++++++++++++++++++++

시작하기 전에 먼저 작은 배경지식을 제공하려고 합니다. TCP Wrappers는 정말 오랫동안 사용되어 온 프로그램입니다. (Wietse Venema's FTP archive 참조). 이 프로그램은 호스트 네임, IP 주소, network 주소등에 기반하여 TCP 서비스의 접근에 제약을 가하는데 사용됩니다. TCP Wrappers의 자세한 설명과 사용하는 방법은 tcpd(1M)를 참고 바랍니다. TCP Wrappers는 Solaris 9부터 운영체제에 통합되기 시작했고 솔라리스 Secure Shell 과 inetd-기반 (streams, nowait) 서비스 등에 이용되고 있습니다.

Secure Shell에 지원되는 TCP Wrappers는 TCP Wrappers 가 함수 host_access(3) 를 이용하여 접속이 허용될것인지 를 결정하기 때문에 항상 활성되 되어 있습니다. 만약 TCP Wrappeps가 설정되어 있지 않았다면 무조건 접속이 허용될 것입니다.그렇지 않으면 hosts.allow 또는 hosts.deny 파일에 적용을 받게 됩니다. 이러한 파일에 대한 좀 더 자세한 정보는 hosts_access(4)를 참고 바랍니다. 주의할 점은 TCP Wrappers 의 모든 manual 페이지는 솔라리스 10에서 /usr/sfw/man 디렉토리 하에 존재 합니다. 이 메뉴얼 페이지를 보기 위해선 다음과 같은 명령을 사용해야 합니다:

$ man -M /usr/sfw/man -s 4 hosts_access

inetd-기반 서비스들은 TCP Wrappers를 다른 방법으로 이용합니다. 솔라리스 9에서 inetd-기반 서비스들에 TCP Wrappers 사용을 활성화 시키려면 /etc/default/inetd 파일 내에 ENABLE_TCPWRAPPERS 파라미터를 YES 로 설정해야 합니다. 기본적으로 TCP Wrappers는 inetd를 위해 활성화 되어 있지 않습니다.

솔라리스 10에서 두가지 새로운 서비스가 새로 보호(wrapper) 되어졌습니다: sendmail 과 rpcbind. sendmail 은 Secure Shell과 비슷한 방법으로 동작합니다. 그것들은 항상 host_access 함수를 호출 하므로 TCP Wrappers 지원은 항상 활성화 되어 있습니다. 특별히 부가적으로 설정하여할 부분도 없습니다. 다른 한편으로는 TCP Wrappers가 rpcbind 를 위해 활성화 되기 위해서는 수동으로 Service Management Facility (SMF)를 수정해 줘야 합니다. 비슷한방법으로 inetd 도 SMF의 속성을 이용하여 TCP Wrappers를 조정하기 위해 수정되어 졌습니다.

이제 inetd 와 rpcbind를 위해 TCP Wrappers를 활성화 시키는 방법에 대해 알아 봅시다.

inetd-기반의 서비스를 위해서 TCP Wrappers를 활성화 하려면 간단히 다음과 같은 명령을 이용하면 도비니다:

# inetadm -M tcp_wrappers=true
# svcadm refresh inetd

다음의 명령은 telnet, rlogin, 그리고 ftp 같은 inetd-기반 (streams, nowait) 서비스를 위해 TCP Wrappers를 활성화 시킵니다(예):

# inetadm -l telnet | grep tcp_wrappersdefault  tcp_wrappers=TRUE

inetd 를 위해 설정한 것이 제대로 동작하게 하려면 다음과 같은 명령을 이용합니다:

# svcprop -p defaults inetd
defaults/tcp_wrappers boolean true

여기서 알아 둘 점은 svccfg(1M) 명령을 이용해도 설정이 가능하다는 것입니다.

# svccfg -s inetd setprop defaults/tcp_wrappers=true
# svcadm refresh inetd

inetadm(1M) 를 사용하든 svccfg 를 사용하든 그것은 전적으로 사용자의 결정 입니다. 또한 각 서비스 단위의 TCP Wrappers 설정도 inetadm 또는 svccfg 을 사용하여 가능합니다. 예를 들어 ftp 가 아닌 telnet 에 TCP Wrappers를 설정하고 싶다고 가정해 봅시다. 기본적으로 글로벌 그리고 서비스 기반의 TCP Wrappers 설정은 비활성화 되어 있습니다:

# inetadm -p | grep tcp_wrappers
tcp_wrappers=FALSE

# inetadm -l telnet | grep tcp_wrappers
default  tcp_wrappers=FALSE

# inetadm -l ftp | grep tcp_wrappers
default  tcp_wrappers=FALSE

telnet에 TCP Wrappers를 활성화 시키고 싶다면 다음과 같은 명령을 사용합니다:

# inetadm -m telnet tcp_wrappers=TRUE

설정을 다시 한번 확인해 봅시다:

# inetadm -p | grep tcp_wrappers
tcp_wrappers=FALSE

# inetadm -l telnet | grep tcp_wrappers
      tcp_wrappers=TRUE

# inetadm -l ftp | grep tcp_wrappers
default  tcp_wrappers=FALSE

위에서 보듯이 TCP Wrappers 는 telnet 에 대해 활성화 되어 있지만 다른 것들에 대해서는 그렇지 않습니다.

rpcbind 를 위해 TCP Wrappers 를 설정하려면 다음과 같은 명령을 사용합니다:

# svccfg -s rpc/bind setprop config/enable_tcpwrappers=true
# svcadm refresh rpc/bind

이것이 활성화 됐는지 여부는 다음의 명령으로 확인 가능합니다:

# svcprop -p config/enable_tcpwrappers rpc/bind
true

From Sun Korea Developer Network.
(*.95.187.205)