剛寫了一個分析 /var/log/secure 日志,自動阻斷入侵者 IP 的 script
適用系統:Linux
有不足之處請大家指點
#! /bin/bash
# 獲取前 1 分鐘內的 secure 記錄,統計 ssh 認證失敗的 IP 和其 失敗次數
SCANNER=`grep "\`date \"+ %e %H:%M\" -d \"-1min\"\`" /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $1"="$2;}'`
for i in $SCANNER
do
# 取認證失敗次數
NUM=`echo $i|awk -F= '{print $1}'`
# 取其 IP 地址
IP=`echo $i|awk -F= '{print $2}'`
# 若其在失敗次數超過 5 次且之前沒有被阻斷過,那么添加一條策略將其阻斷,并記錄日志
if [ $NUM -gt 5 ] && [ -z "`iptables -vnL INPUT|grep $IP`" ]
then
iptables -I INPUT -s $IP -j DROP
echo "`date` $IP($NUM)" >;>; /var/log/scanner.log
fi
done執行方式
用 crond 來運行,1 分鐘運行 1 次
運行效果
QUOTE:
[root@platinum root]# iptables -vnL INPUT
Chain INPUT (policy DROP 548 packets, 67283 bytes)
pkts bytes target prot opt in out source destination
101 10240 DROP all -- * * 211.248.100.100 0.0.0.0/0
state NEW,RELATED,ESTABLISHED
[root@platinum root]#
QUOTE:
[root@platinum root]# cat /var/log/scanner.log
Sat Jul 16 10:27:22 CST 2005 211.248.100.100(15)
[root@platinum root]#這個script 僅僅是一個研究,對于脆弱的sshd 還是很有一定幫助的。對于實際生產系統,可以會用專業的防火墻去處理,這些方法只是給沒有對 TCP/IP 編程經驗的“菜鳥”們用的。