tcp_wrappers에 관한 질문입니다..
작성자 정보
- 신재훈 작성
 - 작성일
 
컨텐츠 정보
- 6,390 조회
 - 1 댓글
 - 0 추천
 - 목록
 
본문
작성자 : 신재훈
E-amil : chelsi@djlug.org
Tcp wrapper란 ? 
TCP를 기반으로 한 네트워크 서비스(finger, ftp, telnet 등)의청을 
받아 그 서비스를 실행하기전에 요청한 호스트에 대해 보안상으로 
필요한 검사를 하여 서비스가 실행되기 이전에 공격을 막을 수 있도록 
해주는 프로그램이다. 
[softlab(root)::/]$ 
Tcp wrapper 설치방법 및 환경설정 
1. 해당 사이트에서 TCP wrapper 다운로드 
2. 압축 해제 
[softlab(root)::/tmp]$ gzip -d tcp_wrappers_7[1].6.tar.gz 
[softlab(root)::/tmp]$ tar xvf tcp_wrappers_7[1].6.tar 
3. 컴파일 
1) 시스템 타입 확인 
[softlab(root)::/tmp]$ uname -a 
SunOS softlab 5.7 Generic_106541-08 sun4u sparc SUNW,Ultra-1 
보는 바와 같이 SunOS 5.7 이다. 
2) OS의 종류가 SunOs 5.x 이고 cc컴파일러가 gcc인경우 다음과 같이 명령을 수행한다. 
[softlab(root)::/]$ cd tcp_wrappers_7.6 
[softlab(root)::/tmp/tcp_wrappers_7.6]$ make REAL_DAEMON_DIR=/usr/sbin sunos5 CC=gcc 
REAL_DAEMON_DIR은 해당 시스템의 실제 데몬들이 위치해 있는 디렉터리를 말한다. 
solaris의 경우 실제 데몬 디렉터리는 /usr/sbin이다. 이 실제 데몬 디렉터리는 사용자가 
임의로 조정하여도 무방하다. 예) mkdir /usr/local/etc <-여기에 실제 데몬 복사 
3) 컴파일이 정상적으로 되었다면 다음과 같은 실행파일들이 생성된다. 
   tcpdchk, safe_finger, try-from, tcpdmatch, tcpd 
   각각의 기능을 살펴보면 아래와 같다. 
   - tcpd : TCP Wrapper 프로그램(데몬) 
   - tcpdchk : TCP Wrapper 컨피규레이션 체크 프로그램 
   - tcpdmatch : TCP Wrapper 엑세스 콘트롤 체크 프로그램 
   - try-from : 유저 체크 유틸리티 
   - safe_finger : finger 체크 유틸리티 
4. 인스톨 방법 
1) Makefile에는 인스톨 Target이 없기 때문에 수동으로 적당한 곳에 인스톨한다 
   필자의 경우는 /usr/sbin에 복사했다. 
[softlab(root)::/]$ cp tcpd tcpdchk tcpdmatch try-from safe_finger /usr/sbin 
5. 사용 방법(환경 설정) 
1) telnet등 각종 어플리케이션의 엑세스를 상기 TCP Wrapper 프로그램으로 
   교체하기 위해 "/etc/inetd.conf"화일을 편집한다. 
[softlab(root)::/]$ vi /etc/inetd.conf 
ex) 
    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"를 작성. 
[softlab(root)::/]$ cat /etc/hosts.deny 
ALL: ALL : ( (/usr/sbin/safe_finger -l %u@%h; 
echo "--- USERS LIST ---";/usr/bin/rusers -l -i %h) |  
/usr/bin/mail -s "%d에의해 %h에서 test로..."chelsi@hitel.net) & 
ALL: ALL : (/usr/sbin/safe_finger -l @%h |  
/usr/bin/mail -s %d-%h root) & 
상기 첫번째 행은 외부에서 침입시도시 그 log를 전산실에 있는 test의   
일정한 장소로 메일을 보내도록 한 것이며, 두번째 #으로 
막아놓은 행은 그 시스템의 root로 메일을 보내도록 기술한 것이다. 
ii) 다음에는 엑세스를 허락하는 화일 "/etc/hosts.allow"를 작성한다. 
[softlab(root)::/]$  vi /etc/hosts.allow 
in.ftpd: LOCAL .softlab.ce.daejin.ac.kr 203.237. 
in.telnetd: LOCAL, .softlab.ce.daejin.ac.kr 203.237. 
iii) 콘트롤 화일의 기술법 
-. 콘트롤 화일의 서식 
서버프로그램: 클라이언트 리스트 [ : 쉘의 리스트 ] 
-. 클라이언트 리스트 기술례 
        a) 호스트 IP Address에 의한 기술 
        203.237.81.88 
        b) 네트웍 어드레스와 네트 마스크에 의한 기술 
        203.237.81.0/255.255.255.0 
        c) 네트 그룹에 의한 기술 
        @local-network 
             (이 경우 지정한 네트웍 그룹이 /etc/netgroup에 등록 필요) 
        d) 호스트 명에 의한 기술 
        .softlab.ce.daejin.ac.kr 
        (상기 도메인명만을 기술하면 그 도메인에 등록된 모든 호스트에 적용) 
        e) /etc/host내의 모든 로칼 호스트명을 표시 하는와일드카드 
        LOCAL 
        f) 모든 호스트를 표시 하는 와일드카드 
        ALL 
        g) 유저명과 호스트명의 조합 사용 
        chelsi@soft.ce.daejin.ac.kr 
-. hosts.allow와 hosts.deny에 기술되지 않은 호스트에 대하여는 
       엑세스가 허가되므로 통상은 hosts.deny 에서 모든 호스트를 
       거부한후 hosts.allow 에서 엑세스 허가를 지정하는 방법을 권한다. 
-. 이 매뉴얼의 클라이언트 리스트의 쉘 스크립트는 생략해도 무방하나 
       여기서는 콘트롤 화일내의 패턴 매치가 참일경우 
       쉘 스크립트가 수행 되도록 하였으므로 참고 바란다. 
       특히, %h, %d 등은 TCP Wrapper에서의 표현으로 각각 호스트명과 데몬 
       프로세스명을 나타낸다. 
6. daemon 의 구동 
[softlab(root)::/]$ ps -aux | grep inetd 
root 128 1 4 10월 01 ? 500:59 /usr/sbin/inetd -s 
[softlab(root)::/]$ kill -HUP 128 
여기서 128은 /etc/inetd 데몬의 Process 번호
관련자료
- 
			이전
 - 
			다음
 
조용철님의 댓글
- 조용철
 - 작성일
 
								