[보안] xinetd 설치와 tcp_wrapper 사용하기 -아랑
xinetd 설치 및 tcpwrapper 적용
xinetd 버퍼오버플로워 취약점 때문에 업그레이드를 시켜주어여 한다.
안그러면 root 를 손쉽게 넘겨주게 된다.
xinetd-2.3.0 으로 업그레이드함..
/usr/local/src 및에 xinetd-2.3.0.tar.gz 를 푼다.
# cd /usr/local/src/xinetd-2.3.0
# ./configure –with-libwrap –with-loadavg
(tcpwrapper 를 적용하기 위해서는 –with-libwrap 옵션을 꼭 주어야 함)
# make
# make install
# cd /usr/sbin
# mv xinetd xinetd_bak
# ln -s /usr/local/sbin/xinetd xinetd
이걸로 설치는 완료..
tcpwrapper 을 적용하기 위해서 /etc/hosts.deny , /etc/hosts.allow 파일을
설정한다.
# vi /etc/hosts.deny
———————————————————————–
ALL : ALL : twist ( /etc/host-check Y Y %a %c %d %h %n %p %s %u ) &
# vi /etc/hosts.allow
———————————————————————–
ALL: localhost 211.47.64.145 211.47.67.154 211.47.67.6
# vi /etc/host-check
———————————————————————–
#!/bin/sh
################################ 변수정의부문
# 메일 수신자
mailto=alang at sysmng.com
# 화면출력 여부, 메일전송 여부
dsp=$1; msg=$2
# 접속자 정보 등
a=$3; c=$4; d=$5; h=$6; n=$7; p=$8; s=$9; u=$10
# 현재 시간
time=`date`
# 접속시도자 소속 서버의 finger 정보
finger=`/usr/bin/finger -l @$h 2> /dev/null`
################################ 화면 출력부문
if [ $dsp = Y ]
then
echo ”
===================================
접속이 허용되지 않습니다.
===================================
Access Time : $time
Client host address : $a
Client information : $c
Client host name(or IP) : $h
Client host name : $n
Client user name : $u
”
fi
################################ 메일 송신부문
if [ $msg = Y ]
then
/bin/echo ”
===============================
접속 거부자 상세정보
===============================
Access Time : $time
Access client host address : $a
Access client information : $c
The daemon process name : $d
Access client host name(or IP) : $h
Access client host name : $n
The daemon process id : $p
Server information : $s
Access client user name : $u
————————————–
Access client finger information
————————————–
$finger
————————————————
” | \\
/bin/mail -s “tcp_wrapper report [$d]” $mailto
fi
————————————————————————–
# chmod 755 /etc/host-check
이와 같이 하면 tcpwrapper 가 적용된다. 물런 xinetd 를 재시작 해주고..
xinetd 에서 tcpwrapper 는 이전 버젼인 inetd 보다 막강하고 용도가 다양하다.
위와 같이 /etc/hosts.deny 에서 ALL : ALL 로 걸면 21(ftp) 포트를 제외하고는
모두 걸리게 된다.
그렇기 때문에 /etc/hosts.allow 에서도 ALL 로 모두 풀어 주어야 한다.
telnet 만 wrapper 에 적용시킬려면 /etc/hosts.deny 에서 ..
in.telnetd : ALL 식으로 걸어주면 되고..
/etc/hosts.allow 에서도
in.telnetd : 식으로 풀어 주면 된다.