이번 글은 고객사한테 갈굼당한게 너무 억울해서 작성하게 되었습니다… :(

TCP Wrapper란?

TCP Wrapper는 리눅에서 지원하는 호스트 기반 ACL(Access Control List) 시스템” 입니다.

FTP, SSH, telent 등 특정 서비스에 대한 IP 기반 접근 제어 설정을 할 수 있습니다.

TCP Wrapper 작동 방식

TCP Wrapper는 공유 라이브러리 형태로 작동합니다.

구성요소

  • libwrap.so : 공유 라이브러리
  • /etc/{hosts.allow,hosts.deny} : 접근 제어 설정 파일

동작 방식

  1. TCP Wrapper를 지원하는 서비스(ex: sshd, vsftpd, rpcbind 등)는 실행 시 libwrap.so를 링크하거나 로드
  2. 클라이언트가 접근 시도 시, 해당 서비스는 libwrap을 통해 /etc/hosts.allow, /etc/hosts.deny 파일을 순서대로 참조
  3. 허용 여부를 판단 후 접근 허용/거부

서비스 형태로 작동하는 방식이 아닌 알아서 적용

지원 확인 방법

ldd $(which sshd) | grep libwrap

위 명령어를 사용했을때 출력이 있으면 지원하는 서비스입니다.

TCP Wrapper 설정 파일

TCP Wrapper에서 참조하는 설정 파일은 총 두개입니다.
/etc/hosts.allow/etc/hosts.deny 입니다.

파일 예시는 아래와 같습니다.

/etc/hosts.allow

sshd : 192.168.1.100
sshd : 192.168.1.0/255.255.255.0
vsftpd : .trusted.com
ALL : 127.0.0.1

/etc/hosts.deny

ALL : ALL

TCP Wrapper의 미래

사실 TCP Wrapper는 점점 firewalld로 대체되어 가는 추세입니다.

리눅스에서는 iptables, TCP Wrapper 보다 firewalld 를 사용하기를 권장하고 있고 기능들을 다 병합하고 있습니다.

그리고 주요 데몬들도 TCP Wrapper 지원을 중단 중이기도 하구요.

최근 리눅스 배포판에서는 아예 TCP Wrapper가 지원되지 않는 경우도 많기 때문에 다들 firewalld를 사용하시면 될 것 같습니다.