返回列表 发帖

[注意]如何禁掉扫描机器的 IP(通过 ssh 认证记录分析)非常实用

[code:1:6f82d78e64]
#! /bin/bash
# 获取前 1 分钟内的 secure 记录,统计 ssh 认证失败的 IP 和其 失败次数
SCANNER=`grep "\`date \"+ %d %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 -m state --state NEW,RELATED,ESTABLISHED -j DROP
                echo "`date` $IP($NUM)" >> /var/log/scanner.log
        fi
done
[/code:1:6f82d78e64]

执行方式
用 crond 来运行,1 分钟运行 1 次

运行效果
[quote:6f82d78e64]
[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:6f82d78e64]
[quote:6f82d78e64]
[root@platinum root]# cat /var/log/scanner.log
Sat Jul 16 10:27:22 CST 2005 211.248.100.100(15)
[root@platinum root]#
[/quote:6f82d78e64]

实际效果非常不错,以前我清理日志必须一个星期清一次,这下过了半个月,日志安然无恙
通过ssh telnet猜解root密码的确是烦人,这下安逸了,呵呵.

返回列表 回复 发帖