TCP Wrapper: Difference between revisions
From CS Wiki
(→사용 방법) |
No edit summary |
||
(7 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
[[분류:리눅스 프로그램]][[분류:보안 도구]] | |||
==개요== | ==개요== | ||
* | * 주요 서비스에 대해 IP기반으로 접근을 통제하는 중앙통제 ACL 시스템 | ||
* 리눅스 또는 BSD 같은 운영 체제의 인터넷 프로토콜 서버에서 네트워크 접근을 필터링하기 위해 사용됨 | * 리눅스 또는 BSD 같은 운영 체제의 인터넷 프로토콜 서버에서 네트워크 접근을 필터링하기 위해 사용됨 | ||
* 대부분 서비스 자체적으로 ACL기능을 제공하기 때문에 점점 | * 대부분 서비스 자체적으로 ACL기능을 제공하기 때문에 점점 안 쓰이는 분위기다. | ||
== TCP Wrapper 접근제어 가능 서비스 == | |||
'''사용하기 간편하지만 방화벽처럼 모든 서비스 및 포트를 통제 가능한 것이 아님에 주의.''' | |||
* FTP | |||
* Telnet | |||
* SSH | |||
* TFTP | |||
* finger | |||
* systat | |||
* rlogin | |||
* rsh | |||
* talk | |||
* exec | |||
'''httpd는 해당사항이 없다!''' | |||
==사용 방법== | ==사용 방법== | ||
hosts.allow와 hosts.deny를 통해 서비스별 필터링을 수행한다. | hosts.allow와 hosts.deny를 통해 서비스별 필터링을 수행한다. | ||
<pre class= | |||
서비스 목록 : 호스트 목록 | * /etc/hosts.allow: 접근을 허용할 Source IP 설정 | ||
* /etc/hosts.deny: 접근을 제한할 Source IP 설정 | |||
<pre class="shell"> | |||
서비스 목록: 호스트 목록 | |||
</pre> | </pre> | ||
형태로 사용된다. 특정 서비스에 대한 접근 통제만 하려면 hosts.deny만 작성해도 된다. | 형태로 사용된다. 특정 서비스에 대한 접근 통제만 하려면 hosts.deny만 작성해도 된다. | ||
* | * 둘다 설정되어 있을 경우 allow가 우선순위 높음 | ||
=== 서비스 목록 === | |||
서비스명이 아닌 실행 데몬명으로 적어야 한다. | |||
* | * 예를 들어 telnet제어 시 in.telnetd라고 적는다. | ||
* | * 복수의 경우 따옴표로 구분한다. | ||
=== 호스트 목록 === | |||
아래와 같이 표현할 수 있다. | |||
* 192.168.10. | |||
* 192.168.10.0/255.255.255.0 | |||
* .itwiki.kr | |||
* 192.168.10.0/255.255.255.0, .itwiki.kr | |||
* .itwiki.kr EXCEPT crack.itwiki.kr | |||
* .kr EXCEPT www.crack.kr | |||
===hosts.deny=== | ===hosts.deny=== | ||
접속을 막을 목록을 관리한다. 화이트리스트 기반으로 | 접속을 막을 목록을 관리한다. 화이트리스트 기반으로 운영하려면 아래와 같이 설정한다. | ||
<pre class= | <pre class="shell"> | ||
# vi /etc/hosts.deny | # vi /etc/hosts.deny | ||
ALL : ALL | ALL:ALL | ||
</pre> | </pre> | ||
===hosts.allow=== | ===hosts.allow=== | ||
화이트리스트 기반으로 | 화이트리스트 기반으로 운영하려면 hosts.deny에서 ALL:ALL로 다 막아놓고 hosts.allow에 허용할 서비스만 연다. | ||
<pre class= | <pre class="shell"> | ||
# vi /etc/hosts.allow | # vi /etc/hosts.allow | ||
ALL : localhost | ALL:localhost | ||
in.telnetd : 192.168.10. | in.telnetd:192.168.10. | ||
sshd, vsftpd : .itwiki.kr EXCEPT crack.itwiki.kr | sshd, vsftpd:.itwiki.kr EXCEPT crack.itwiki.kr | ||
</pre> | </pre> | ||
== | == 로그 == | ||
* 잘 사용하진 않지만 | TCP Wrapper가 기록하는 로그 내용은 운영체제별로 다음 장소에 기록 | ||
* aix: /var/admin/messages | |||
* hpux10: /usr/spool/mqueue/syslog | |||
* irix: /var/admin/syslog | |||
* solaris: /var/log/syslog | |||
* linux: /var/log/messages, /var/log/secure | |||
==기타== | |||
* 잘 사용하진 않지만 Shell Command를 사용하여 어떤 서비스에 어떤 호스트가 접속할 경우 이메일을 발송하는 등의 고급 옵션을 지정할 수 있다. | |||
* hosts.allow 맨 아래쪽에 다음과 같은 특수한 정책을 넣어 hosts.deny의 역할을 대신할 수 있다. | * hosts.allow 맨 아래쪽에 다음과 같은 특수한 정책을 넣어 hosts.deny의 역할을 대신할 수 있다. | ||
<pre class= | <pre class="shell"> | ||
# vi /etc/hosts.allow | # vi /etc/hosts.allow | ||
ALL : localhost | ALL:localhost | ||
in.telnetd : 192.168.10. | in.telnetd:192.168.10. | ||
sshd, vsftpd : .itwiki.kr EXCEPT crack.itwiki.kr | sshd, vsftpd:.itwiki.kr EXCEPT crack.itwiki.kr | ||
ALL : ALL : Deny | ALL:ALL:Deny | ||
</pre> | </pre> | ||
== 보안 유의사항 등 == | |||
* 현대 리눅스에선 네트워크 단위의 접근 통제, 서비스 자체적인 ACL이 지원되고 있기 때문에 TCP Wrapper의 사용은 지양된다.<br>[https://fedoraproject.org/wiki/Changes/Deprecate_TCP_wrappers#Deprecate_TCP_wrappers 페도라 위키(원문): 현대 리눅스에서 TCP Wrapper는 지양되어야 한다는 내용] | |||
* 다만 설정이 무척 간단하고 직관적이라 현장에선 아직 많이 사용되고 있다. | |||
* 나열된 서비스가 아니면 통제가 안되므로 TCP Wrapper 만으로 서버를 보호하기엔 부족하여 보안 감사, 심사 시 적절한 서버 접근 통제 시스템으로 불인정되기도 한다. | |||
* CentOS 8 부터는 기본적으로 지원이 안된다. epel로 설치는 가능하지만 sshd 등에서 TCP Wrapper 모듈을 참조하고 있지 않으므로 실제 동작은 안된다. 이 때 자동화된 보안 점검 도구에선 단순히 hosts.allow나 hosts.deny만 확인하고 접근 통제가 되는 것처럼 인지될 수 있으니 주의가 필요하다. |
Latest revision as of 22:22, 13 June 2024
개요[edit | edit source]
- 주요 서비스에 대해 IP기반으로 접근을 통제하는 중앙통제 ACL 시스템
- 리눅스 또는 BSD 같은 운영 체제의 인터넷 프로토콜 서버에서 네트워크 접근을 필터링하기 위해 사용됨
- 대부분 서비스 자체적으로 ACL기능을 제공하기 때문에 점점 안 쓰이는 분위기다.
TCP Wrapper 접근제어 가능 서비스[edit | edit source]
사용하기 간편하지만 방화벽처럼 모든 서비스 및 포트를 통제 가능한 것이 아님에 주의.
- FTP
- Telnet
- SSH
- TFTP
- finger
- systat
- rlogin
- rsh
- talk
- exec
httpd는 해당사항이 없다!
사용 방법[edit | edit source]
hosts.allow와 hosts.deny를 통해 서비스별 필터링을 수행한다.
- /etc/hosts.allow: 접근을 허용할 Source IP 설정
- /etc/hosts.deny: 접근을 제한할 Source IP 설정
서비스 목록: 호스트 목록
형태로 사용된다. 특정 서비스에 대한 접근 통제만 하려면 hosts.deny만 작성해도 된다.
- 둘다 설정되어 있을 경우 allow가 우선순위 높음
서비스 목록[edit | edit source]
서비스명이 아닌 실행 데몬명으로 적어야 한다.
- 예를 들어 telnet제어 시 in.telnetd라고 적는다.
- 복수의 경우 따옴표로 구분한다.
호스트 목록[edit | edit source]
아래와 같이 표현할 수 있다.
- 192.168.10.
- 192.168.10.0/255.255.255.0
- .itwiki.kr
- 192.168.10.0/255.255.255.0, .itwiki.kr
- .itwiki.kr EXCEPT crack.itwiki.kr
- .kr EXCEPT www.crack.kr
hosts.deny[edit | edit source]
접속을 막을 목록을 관리한다. 화이트리스트 기반으로 운영하려면 아래와 같이 설정한다.
# vi /etc/hosts.deny ALL:ALL
hosts.allow[edit | edit source]
화이트리스트 기반으로 운영하려면 hosts.deny에서 ALL:ALL로 다 막아놓고 hosts.allow에 허용할 서비스만 연다.
# vi /etc/hosts.allow ALL:localhost in.telnetd:192.168.10. sshd, vsftpd:.itwiki.kr EXCEPT crack.itwiki.kr
로그[edit | edit source]
TCP Wrapper가 기록하는 로그 내용은 운영체제별로 다음 장소에 기록
- aix: /var/admin/messages
- hpux10: /usr/spool/mqueue/syslog
- irix: /var/admin/syslog
- solaris: /var/log/syslog
- linux: /var/log/messages, /var/log/secure
기타[edit | edit source]
- 잘 사용하진 않지만 Shell Command를 사용하여 어떤 서비스에 어떤 호스트가 접속할 경우 이메일을 발송하는 등의 고급 옵션을 지정할 수 있다.
- hosts.allow 맨 아래쪽에 다음과 같은 특수한 정책을 넣어 hosts.deny의 역할을 대신할 수 있다.
# vi /etc/hosts.allow ALL:localhost in.telnetd:192.168.10. sshd, vsftpd:.itwiki.kr EXCEPT crack.itwiki.kr ALL:ALL:Deny
보안 유의사항 등[edit | edit source]
- 현대 리눅스에선 네트워크 단위의 접근 통제, 서비스 자체적인 ACL이 지원되고 있기 때문에 TCP Wrapper의 사용은 지양된다.
페도라 위키(원문): 현대 리눅스에서 TCP Wrapper는 지양되어야 한다는 내용
- 다만 설정이 무척 간단하고 직관적이라 현장에선 아직 많이 사용되고 있다.
- 나열된 서비스가 아니면 통제가 안되므로 TCP Wrapper 만으로 서버를 보호하기엔 부족하여 보안 감사, 심사 시 적절한 서버 접근 통제 시스템으로 불인정되기도 한다.
- CentOS 8 부터는 기본적으로 지원이 안된다. epel로 설치는 가능하지만 sshd 등에서 TCP Wrapper 모듈을 참조하고 있지 않으므로 실제 동작은 안된다. 이 때 자동화된 보안 점검 도구에선 단순히 hosts.allow나 hosts.deny만 확인하고 접근 통제가 되는 것처럼 인지될 수 있으니 주의가 필요하다.