시작하기 전에 먼저 작은 배경지식을 제공하려고 합니다. 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_wrappers
default 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.