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

댓글 없음:

댓글 쓰기