누군가가 ftp, telnet으로 서버에 접근을 할려고 시도 할때..
로그기록은 모두 /var/log/message 에 남습니다.
이 파일을 이용해서 하루에 로그인 5번이상 실패했을 경우.
행킹을 시도하는 것으로 간주하여 접근 아이피에 대해
iptables 을 이용하여 접근을 막아 버리는 스크립트입니다.
crontab 에 올려서 일정시간 간격으로 체크하도록 하면 좋습니다.
매우 효과적이더라구요..
#!/bin/ksh
LOGFILE='/var/log/messages'
TMPDIR='/tmp/checklog'
TODAY=`date +"%d"`
# 로그파일에서 로그인 실패 아이피 걸러오기
# 로그인 실패 문구 : no such user, Authentication failure 문구가 있으면 로그인 실패한 것으로 봄.
CMD="awk '\$2 == \"$TODAY\" {print \$0 }' ${LOGFILE} | egrep \"no such user | Authentication failure\" | awk -F\"(\" '{print \$2}' | awk -F\"[\" '{pri
nt \$1}'"
# 명령어 실행
LOGDATA=`eval $CMD`
# 임시 디렉토리 생성
[ -d ${TMPDIR} ] || mkdir ${TMPDIR}
for tmpdata in ${LOGDATA}
do
if [ -f ${TMPDIR}/${tmpdata} ]
then
NUM=`cat ${TMPDIR}/${tmpdata}`
SUM=`echo ${NUM}+1 | bc `
echo $SUM > ${TMPDIR}/${tmpdata}
else
`echo 1 > ${TMPDIR}/${tmpdata}`
fi
done
FLIST=`ls ${TMPDIR}`
DATETIME=`date +"%Y-%m-%d %H:%M:%S"`
for IPFILE in $FLIST
do
NUM=`cat ${TMPDIR}/${IPFILE}`
if [ ${NUM} -gt 5 ]
then
IPTABLES=`grep ${IPFILE} /home/logs/iptables/deny.log`
if [ "${IPTABLES}" == "" ]
then
/sbin/iptables -A INPUT -s ${IPFILE} -d clicktour.co.kr -p tcp -j DROP
echo "${DATETIME} messages에서 ${IPFILE} 이 거부되었습니다." >> /home/logs/iptables/deny.log;
fi
fi
done
# 임시 디렉트리 삭제
rm -rf ${TMPDIR}
다음에는 웹상에서 iptables 를 운영하는 소스를 올려보겠습니다.

최고관리자
07-07-02 06:09
0개
12회
TIP
해킹시도하는 아이피 차단 (리눅스)
댓글목록
등록된 댓글이 없습니다.