본문 바로가기
IT/LINUX

[LINUX] 리눅스에서 TCP Wrapper 사용하기(접근제어-ACL설정)

by 양눈 2017. 1. 12.

리눅스에서 TCP Wrapper를 이용하면 간단하게 FTP, Telnet, SSH xinetd 기반의 서비스에 대해 접근제어(ACL)설정이 가능합니다.

최근 버전의 리눅스에서는 TCP Wrapper 사용을 위해 특별한 설치 /etc/hosts.allow, /etc/hosts.deny

파일의 설정만으로 특정 아이피 또는 대역에 대해 접근제어를 허가, 거부 있습니다.  

먼저 어떤 서비스들이 TCP Wrapper에 의해 제어가 되는지 확인 해보겠습니다.

 

1.  TCP Wrapper 의해 제어가 되는 서비스 확인 방법

# which xinetd         -> 파일 실행경로 확인

/usr/sbin/xinetd

 

# ldd /usr/sbin/xinetd   -> 링크된 라이브러리 정보 확인

        linux-vdso.so.1 =>  (0x00007fff9655b000)

        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fea08094000)

        libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fea07e89000)

        libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fea07c6f000)

        ……………………………………………………………………………………

 

# which sshd                 > 파일 실행경로 확인

/usr/sbin/sshd

 

# ldd  /usr/sbin/sshd     -> 링크된 라이브러리 정보 확인

        linux-vdso.so.1 =>  (0x00007fff107fe000)

        libfipscheck.so.1 => /lib64/libfipscheck.so.1 (0x00007f131c423000)

        libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f131c218000)

        libaudit.so.1 => /lib64/libaudit.so.1 (0x00007f131bff1000)

        libpam.so.0 => /lib64/libpam.so.0 (0x00007f131bde2000)

        ……………………………………………………………………………………

which 명령은 실행되는 파일의 경로명을 보여주며, ldd명령은 프로그램이나 라이브러리들이 요구하는 공유라이브러리의 의존성을 출력하여 보여준다

위에서 보듯이 xinetd 기반의 서비스와 sshd 서비스가 TCP Wrapper 의해 제어되는 이유는 libwrap이 링크되어 있기 때문입니다.

 

2 기본구문

TCP래퍼 사용을 위해서는 hosts.deny, hosts.allow 파일에 설정시 " : " 구분하여 값을 입력 하게 됩니다.

[서비스명] : [호스트] 형태로 입력하게 됩니다.

ex) ALL : ALL    -> 모든서비스 : 모든아이피 허가 또는 거부 하겠다.

ex) sshd : ALL   -> sshd 서비스에 대해서 모든 아이피에 대해 허가 또는 거부 하겠다.

ex) in.telnetd : LOCAL -> 텔넷 서비스에 대해서 /etc/hosts 파일 내에 있는 호스트에 대해서만 허가 하겠다.

ex) in.telnetd : 192.168.0.* -> 텔넷 서비스에 대해서 192.168.0.* 대역에 대해서만 허가, 거부 하겠다.

ex) in.telnetd : *.test.com -> 텔넷 서비스에 대해서 *.test.com 도메인에 속한 호스트에 대해서만 허가, 거부 하겠다.

 

3 설정하기 

1) /etc/hosts.deny 설정

: 실제 접근제어사용을 위해 hosts.deny 파일에 ALL : ALL TCP래퍼로 제어되는 모든 서비스에 대해 모든 아이피에 대해 차단 정책을 적용합니다.

# vi /etc/hosts.deny

ALL : ALL

 

2) /etc/hosts.allow 설정

: 접근을 허용할 아이피에 대해 허가리스트에 추가합니다.  

/etc/hosts 파일에 등록된 호스트 들은 모든 서비스에 대해 허가하고, sshd 대해서는 추가적으로

192.168.0.1, 192.168.0.2 아이피에 대해 허가를 합니다.

# vi /etc/hosts.allow

ALL : LOCAL

sshd : 192.168.0.4,192.168.0.5

 

3) /etc/hosts 파일에 호스트 추가

# vi /etc/hosts

server1 192.168.0.1

server2 192.168.0.2

server3 192.168.0.3

 

위와 같이 설정할 경우 192.168.0.1 ~3 아이피의 경우 해당 서버의 모든 서비스에 접근이 가능 하며 192.168.0.4,5 아이피는 sshd서비스로만 접근이 가능합니다그 이외의 아이피에서는 TCP래퍼가 제어하는 모든 서비스로 해당 서버에 접근이 불가능 합니다

댓글