레이블이 TCP Wrapper인 게시물을 표시합니다. 모든 게시물 표시
레이블이 TCP Wrapper인 게시물을 표시합니다. 모든 게시물 표시

2009년 6월 19일 금요일

TCP Wrapper에 대해서...

1. Tcp wrapper

 

TCP를 기반의 네트워크 서비스(finger, ftp, telnet 등)의 request를 받아 그 서비스를 실행하기전에 요청한 호스트에 대해 보안상으로 필요한 검사를 하여 서비스가 실행되기 이전에 공격을 막을 수 있도록 해주는 프로그램이다.

 

2. 사용 방법(환경설정)
 
1) telnet등 각종 어플리케이션의 엑세스를 상기 TCP Wrapper 프로그램으로 교체하기 위해 "/etc/inetd.conf"

    화일을 편집한다.
    (>root)/# vi /etc/inetd.conf
 
    예로써 다음을 보면,

    ftp stream tcp nowait root /usr/sbin/in.ftpd   in.ftpd
    telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd
 
    와 같은 형태로 기술되어 있는 밑줄 부분을 /usr/local/etc/tcpd 로 아래와 같이 바꾸면 된다.
 
    ftp stream tcp nowait root /usr/local/etc/tcpd  /usr/sbin/in.ftpd
    telnet stream tcp nowait root  /usr/local/etc/tcpd /usr/sbin/in.telnetd
 
2) "/etc/inetd.conf"화일에서 ftp, telnet외에 finger, exec, rsh, rlogin, tftp, talk, comsat등 다른 tcp 또는

    udp 서비스들도 사용할수 있으므로 엑세스 콘트롤 해야할 필요가 있는 서비스들을 /usr/local/etc/tcpd  으로

    교체해 주면된다.
 
3) 다음에는 tcpd에 의하여 엑세스 콘트롤을 결정하는 룰(규칙)을   기술하는 콘트롤 화일을 작성한다.
 
     i) 우선 엑세스를 거부하는 화일 "/etc/hosts.deny"를 작성한다.
         (bigcom>root)/# cat /etc/hosts.deny
 
         ALL: ALL : ( (/usr/local/etc/safe_finger -l %u@%h;\
         echo "--- USERS LIST ---";/usr/bin/rusers -l -i %h) | \
         /usr/bin/mail -s "%d에의해 %h에서 test로..." jin@bigcom.co.kr) &
         ALL: ALL : (/usr/local/etc/safe_finger -l @%h | \
         /usr/bin/mail -s %d-%h root) &
 
    상기 첫번째 행은 외부에서 침입시도시 그 log를 전산실에 있는 test의 일정한 장소로 메일을 보내도록 한 것이

    며, 두번째 #으로  막아놓은 행은 그 시스템의 root로 메일을 보내도록 기술한 것이다.
 
    ii) 다음에는 엑세스를 허락하는 화일 "/etc/hosts.allow"를 작성한다.
 
    (>root)/# vi /etc/hosts.allow
     in.ftpd: LOCAL .bigcom.co.kr 210.116.
     in.telnetd: LOCAL, .bigcom.co.kr 210.116.
 
     만일, 데몬명이 서로 틀리거나 맞지않으면 모두 엑세스가 허용되지 않는등의 현상이 발생하므로 주의 바란다.)
 
    iii) 콘트롤 화일의 기술법
 

     -. 콘트롤 화일의 서식
         서버프로그램: 클라이언트 리스트 [ : 쉘의 리스트 ]


 

     -. 클라이언트 리스트 기술례

 

         a) 호스트 IP Address에 의한 기술
            165.133.1.43
         b) 네트웍 어드레스와 네트 마스크에 의한 기술
            165.133.3.0/255.255.255.0
         c) 네트 그룹에 의한 기술
            @local-network           (이 경우 지정한 네트웍 그룹이 /etc/netgroup에 등록 필요)
         d) 호스트 명에 의한 기술
            test.greenage2.com
            .greenage2.com
            (상기 도메인명만을 기술하면 그 도메인에 등록된 모든 호스트에 적용)
         e) /etc/host내의 모든 로칼 호스트명을 표시 하는와일드카드
            LOCAL
          f) 모든 호스트를 표시 하는 와일드카드
            ALL
          g) 유저명과 호스트명의 조합 사용
            fuco@test.greenage2.com
  

      -. 기술식과 와일드카드의 표기 방법은 상기외에도 있으므로 온라인 매뉴얼을 찾아보기 바란다.
      -. hosts.allow와 hosts.deny에 기술되지 않은 호스트에 대하여는 엑세스가 허가되므로 통상은 hosts.deny

         에서 모든 호스트를 거부한후 hosts.allow 에서 엑세스 허가를 지정하는 방법을 권한다.
      -. 본 문서에서의 클라이언트 리스트의 쉘 스크립트는 생략해도 무방하나 여기서는 콘트롤 화일내의 패턴 매치

         가 참일경우 쉘 스크립트가 수행 되도록 하였으므로 참고 바란다.
         특히, %h, %d 등은 TCP Wrapper에서의 표현으로 각각 호스트명과 데몬 프로세스명을 나타낸다.





출처 jerry.lee | 제리
원본 http://blog.naver.com/jeeunglee/140013861380