리눅스에서 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래퍼가 제어하는 모든 서비스로 해당 서버에 접근이 불가능 합니다.
'IT > LINUX' 카테고리의 다른 글
[LINUX][RHEL7] 네트워크 IP설정 (nmcil 명령어, 설정파일 사용) (0) | 2017.01.19 |
---|---|
[LINUX][RHEL7] 리눅스 NFS서버 NFS클라이언트 설정 (2) | 2017.01.12 |
[LINUX] 파일의 해시값 확인하기 (md5, sha1) (0) | 2017.01.11 |
[LINUX] HBA카드 WWN 확인방법 (0) | 2017.01.04 |
[LINUX][RHEL7] GRUB2 패스워드 설정하기 (0) | 2017.01.01 |
댓글