이번 글은 고객사한테 갈굼당한게 너무 억울해서 작성하게 되었습니다… :(
TCP Wrapper란?
TCP Wrapper는 리눅에서 지원하는 호스트 기반 ACL(Access Control List) 시스템” 입니다.
FTP, SSH, telent 등 특정 서비스에 대한 IP 기반 접근 제어 설정을 할 수 있습니다.
TCP Wrapper 작동 방식
TCP Wrapper는 공유 라이브러리 형태로 작동합니다.
구성요소
libwrap.so: 공유 라이브러리/etc/{hosts.allow,hosts.deny}: 접근 제어 설정 파일
동작 방식
- TCP Wrapper를 지원하는 서비스(ex: sshd, vsftpd, rpcbind 등)는 실행 시
libwrap.so를 링크하거나 로드 - 클라이언트가 접근 시도 시, 해당 서비스는
libwrap을 통해/etc/hosts.allow,/etc/hosts.deny파일을 순서대로 참조 - 허용 여부를 판단 후 접근 허용/거부
서비스 형태로 작동하는 방식이 아닌 알아서 적용
지원 확인 방법
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 : ALLTCP Wrapper의 미래
사실 TCP Wrapper는 점점 firewalld로 대체되어 가는 추세입니다.
리눅스에서는 iptables, TCP Wrapper 보다 firewalld 를 사용하기를 권장하고 있고 기능들을 다 병합하고 있습니다.
그리고 주요 데몬들도 TCP Wrapper 지원을 중단 중이기도 하구요.
최근 리눅스 배포판에서는 아예 TCP Wrapper가 지원되지 않는 경우도 많기 때문에 다들 firewalld를 사용하시면 될 것 같습니다.