리눅스

Total 331
Today 0
profile_image
최고관리자
07-07-02 06:09 0개 12회
TIP
해킹시도하는 아이피 차단 (리눅스)
누군가가 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 를 운영하는 소스를 올려보겠습니다.

댓글목록

등록된 댓글이 없습니다.