별의 공부 블로그 🧑🏻‍💻
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
      • 프로세스의 이미지를 교체한 후에 실행
  • 확장 옵션 (예약어)
예약어 설명
%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
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖