728x90
728x170
TCP Wrapper
TCP Wrapper의 개요
- tcpd 라는 데몬이 슈퍼 데몬인 inetd 에 의하여 수행되는 서비스들의 접근을 제어하도록 하는 프로그램
- 접속을 허락한 호스트만 접속할 수 있도록 하거나, 원하지 않는 호스트의 접근을 막도록 해주는 접근 제어를 담당한다.
- 주로 TCP 연결을 기반으로 한다.
- inetd 에 의해 관리되는 telnet, rlogin, rsh 등을 감시하고 필터링할 수 있다.
- xinetd 는 자체적으로 접근 제어 를 수행하지만, 여전히 Tcp Wrapper를 사용한 접근 제어도 가능할 뿐만 아니라 sshd, vsftpd, smbd, gdm 등 일부 단독 데몬도 접근 제어가 가능하다.
- 다음의 파일 이용한다.
- 종류
- /etc/hosts.allow : 접근이 허가된 호스트의 목록 파일
- /etc/hosts.deny : 접근이 금지된 호스트의 목록 파일
- 검색 순서
- /etc/hosts.allow 를 먼저 읽어 들여 등록된 호스트를 허가한다.
- 그 후 /etc/hosts.deny 에 설정된 호스트를 금지시킨다.
- /etc/hosts.allow 파일에 등록되면 /etc/hosts.deny 파일에 상관없이 허가된다.
- 종류
관련 파일 작성 규칙
- /etc/hosts.allow 및 /etc/hosts.deny 파일 설정 시
- 새로운 줄(줄 바꿈)은 무시된다.
- 줄을 연장할 때는 백슬래시(\) 를 사용해야 한다.
- 빈 줄 혹은 #으로 시작되는 줄은 주석으로 간주된다.
설정 형식
daemon_list : client_list [ : shell_command]
① daemon_list
- 1개 이상의 데몬(서버 프로그램) 프로세스 혹은 예약어(와일드 카드)를 쓸 수 있다.
- 주의할 점
- 텔넷 관련 정책을 세울 경우, telnet이라는 서비스명이 아닌 in.telnetd 와 같은 실행 데몬명을 적어야 한다.
- 여러 데몬을 명시할 때는 ,으로 구분한다.
- 예약어
예약어 | 설명 |
ALL | 모든 서비스 또는 모든 호스트 |
LOCAL | - 같은 도메인에 있는 모든 호스트 - . 문자를 포함하지 않는 모든 호스트 |
KNOWN | 이름이 KNOWN인 호스트 또는 이름(주소)을 알고 있는 호스트 |
UNKNOWN | 이름이 UNKNOWN인 호스트 또는 이름(주소)을 모르고 있는 호스트 |
PARANOID | 호스트명과 주소가 일치되지 않는 호스트 |
가 EXCEPT 나 | 리스트 가에서 나를 제외한 호스트 |
설정 예
# vi /etc/hosts.deny
ALL : ALL
② client_list
- 1개 이상의 호스트 이름, 주소, 패턴 혹은 예약어(클라이언트 이름 혹은 주소가 일치하는 것) 를 쓸 수 있다.
- 일반적으로 IP 주소나 도메인을 기입함.
사용 가능한 표현 예
192.168.1.
192.168.1.0/255.255.255.0
.example.com
설정 예
# vi /etc/hosts.allow
ALL : localhost, .starrykss.org
in.telnetd : 192.168.5.13
in.telnetd@192.168.1.254: 192.168.1.
sshd : .starrykss.com EXCEPT cracker.starrykss.com
ALL EXCEPT vsftpd : .ihd.or.kr EXCEPT bad.ihd.or.kr
in.telnetd, vsftpd : 203.247.40., .kor.ac.kr
ALL : ALL : DENY
- 위에 설정된 호스트 이외에는 어떠한 서비스도 받을 수 없다는 설정이다.
- /etc/hosts.deny 파일을 설정하는 것 대신에 사용한다.
③ shell_command
- 다음을 사용할 수 있다.
- spawn
- 현재 수행 중인 프로세스의 자식 프로세스로 실행
- twist
- 프로세스의 이미지를 교체한 후에 실행
- spawn
- 확장 옵션 (예약어)
예약어 | 설명 |
%a | 클라이언트(서버)의 주소 |
%c | - 클라이언트의 정보 - user@host 또는 user@address |
%d | 데몬 프로세서의 이름 |
%h (%H) | 클라이언트(서버)의 호스트명 또는 주소 |
%n (%N) | 클라이언트(서버)의 호스트명 또는 unknown, paranoid |
%p | 데몬의 프로세스 아이디(PID) |
%s | - 서버의 정보 - daemon@host 또는 daemon@address |
%u | 클라이언트 사용자명 또는 unknown |
사용 예
# vi /etc/hosts.deny
ALL : cracker.starrykss.com : twist (finger -l @%h | mail -s %d -%h root) &
- 의심되는 호스트인 cracker.starrykss.com가 관련 서비스에 접근을 시도할 경우, 접속을 거부하고, 관련 정보를 메일로 전송한다.
문제 해결 전략
- cat /etc/hosts.deny 명령 또는 cat /etc/hosts.allow 명령을 사용하여 파일의 내용을 출력해준다.
$ cat /etc/hosts.allow
#
# hosts.allow This file contains access rules which are used to
# allow or deny connections to network services that
# either use the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# See 'man 5 hosts_options' and 'man 5 hosts_access'
# for information on rule syntax.
# See 'man tcpd' for information on tcp_wrappers
#
$ cat /etc/hosts.deny
#
# hosts.deny This file contains access rules which are used to
# deny connections to network services that either use
# the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# The rules in this file can also be set up in
# /etc/hosts.allow with a 'deny' option instead.
#
# See 'man 5 hosts_options' and 'man 5 hosts_access'
# for information on rule syntax.
# See 'man tcpd' for information on tcp_wrappers
#
- 구문 규칙에 관한 정보를 얻고 싶을 경우 man 5 hosts_options 또는 man 5 hosts_access 명령을 사용하라는 주석이 설정되어 있다.
- 이 명령을 실행하여 정보를 확인한다.
$ man 5 hosts_access
문제 유형
① TCP Wrapper를 이용하여 접근을 제어하는 과정에 관한 문제
# vi /etc/hosts.deny
ALL: ALL
# vi /etc/hosts.allow
( in.telnetd ): 192.168.6.7
( vsftpd ): ( 192.168.12. )
# vi /etc/hosts.deny
ALL: ALL
# vi /etc/hosts.allow
( in.fingerd ): ( .admin.net )
( in.telnetd ): 10.20.30.40
728x90
그리드형(광고전용)
'Certificate > Linux Master' 카테고리의 다른 글
[리눅스마스터 1급 실기] 삼바(SAMBA) 서버 (0) | 2022.05.09 |
---|---|
[리눅스마스터 1급 실기] SSH(Secure Shell) (0) | 2022.05.09 |
[리눅스마스터 1급 실기] rsyslog (2) | 2022.05.09 |
[리눅스마스터 1급 실기] 디스크 확장 (마운트) (0) | 2022.05.08 |
[리눅스마스터 1급 실기] NTP 서버 설정 (0) | 2022.04.10 |
[리눅스마스터 1급 실기] KVM 서비스 구축 (0) | 2022.04.10 |
[리눅스마스터 1급 실기] FTP 서버 설정 (vsftpd) (0) | 2022.04.10 |
[리눅스마스터 1급 실기] NFS 서버 설정 (/etc/exports) (0) | 2022.04.10 |