tcp_wrappers 사용시 주의할점 (hosts.deny, hosts.allow)
예전부터 리눅스 OS에서는 iptables도 많이 사용하지만 tcp_wrappers 라는 필터링 도구 사용하는 관리자들이 많이 있다.
/etc/hosts.allow 와 /etc/hosts.deny 파일에 sshd:ALL, httpd:192.168.0.1 이런식으로 접근권한을 설정하는것이다.
iptables 방화벽 보다 사용하기 쉽고 단순해서 많은 리눅스 유저들이 사용하고 있는것으로 알고 있다.
예전에 TCP_WRAPPERS 는 INETD, XINETD 인터넷 서비스 데몬 관리자에서 사용하던 필터링 도구인듯 하다.
예전에 책에서 봤을때 일명 슈퍼데몬이 떠 있다가 외부 접속이 있을때 연결을 맺고 해당 데몬을 그때그때 실행하게 되는데
그 이유는 예전에 하드웨어가 비싸거나 사양이 낮았던 시절 (아마 메모리때문인듯 하다) 에 주로 사용했던것 같고
보안적인 측면에서도 이용했다고 하는데 여튼 굳이 거기까지는 알 필요는 없을것 같다.
동작은 아래와 같다고 한다
client 접근 -> inetd (xinetd) -> TCP_WRAPPER 접근제어 -> 데몬 실행
요즘은 모든 데몬들이 STANDALONE 방식으로 많이 운영하기 때문에 iptables 방화벽과 TCP_WRAPPERS를 혼횽해서 사용하기도 한다.
최근에 /etc/hosts.deny 에 필터링이 제대로 적용되지 않아 자료를 좀 찾아보았다.
아래는 내가 /etc/hosts.deny 에 사용하고 있는것은 아래 서비스 데몬들이다. (대충 http 면 웹이니깐 httpd 그냥 끝에 d 를 붙였다)
sshd:ALL samba:ALL pop3:ALL vsftpd:ALL pptpd:ALL httpd:ALL mysqld:ALL |
그리고 /etc/hosts.allow 에는 집, 사무실, 몇개의 아이피만 등록하여 사용하고 있다.
ALL:127.0.0.1 ALL:집 아이피 ALL:사무실 아이피 ALL:큰집 아이피 ALL:작은집 아이피 |
특정 몇개의 데몬들이 차단되지 않는것을 확인해보니 tcp_wrappers 를 지원해야 제대로 차단이 됨을 확인하였다.
서비스 데몬 실행파일 찾기
[root@localhost ~]# which sshd /usr/sbin/sshd |
sshd 가 tcp_wrapper 지원하는지 검색해보기 (다른 데몬들도 확인해보았다)
[root@localhost ~]# ldd /usr/sbin/sshd |grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f79e17f3000)
[root@localhost ~]# ldd /usr/sbin/vsftpd |grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f71d595b000)
[root@localhost sbin]# ldd /usr/bin/mysql |grep libwrap
[root@localhost sbin]# ldd /usr/sbin/httpd |grep libwrap
[root@localhost bin]# ldd /usr/sbin/snmpd |grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fa57911d000) |
혹은 아래 명령어로 확인해볼수 있다.
[root@localhost ~]# strings /usr/sbin/sshd | egrep “hosts.deny|hosts.allow|libwrap” libwrap.so.0 libwrap refuse returns |
libwrap.so.0 이라고 떠야 정상적으로 tcp_wrapper 에서 지원하는것이다.
지원하는것이 있고 지원하지 않는것이 정해져 있는가?
MYSQL 5.1.40 의 경우는 소스파일을 확인해본결과 INSTALL-SOURCE 파일에 명시되어 있다.
컴파일 옵션 5.1.3 5.1.9 –with-libwrap=DIR Compile in libwrap (tcp_wrappers) support |
mysql 소스를 가지고 와서 컴파일 설치를 한다면 사용할수 있을듯 하다.
결론은 TCP-WRAPPER 에서 지원하지 않으면 기타 방화벽을 사용하여 보안 설정을 해야한다 이다.
TCP_WRAPPER 적용하고 난 뒤 반드시 외부에서 접속 테스팅을 하도록 하자~