感谢该脚本的原创者,我只是纠正了一些错误,添加了几行说明,并测试成功。
该脚本适用于密码验证的SSH服务端。
脚本说明:
利用iptables把超过10次SSH登陆失败的IP拒绝掉。
建议定期自动恢复iptables初始配置,被拒绝的IP在恢复后解封。
IP解封周期由iptables恢复初始配置的周期,及secure日志滚动周期共同决定(默认每周滚动一次)
/etc/crontab中追加以下计划任务,iptables.sh是初始配置脚本,可参考iptables的详细配置。
01 1 * * 1 root /root/script/iptables.sh
*/1 * * * * root /root/script/ssh_deny.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#!/bin/bash ####################################################################### #author unknown #update zhaoyn 2011/03/23 # ####################################################################### SCANIP=`grep “Failed” /var/log/secure | awk ‘{print $(NF-3)}’ |sort|uniq –c|awk ‘{print $1″=”$2;}’` for i in $SCANIP do NUMBER=`echo $i|awk –F= ‘{print $1}’` SCANIP=`echo $i|awk –F= ‘{print $2}’` echo “$NUMBER($SCANIP)” if [ $NUMBER –gt 10 ] && [ –z “`iptables -vnL INPUT|grep $SCANIP`” ] then /sbin/iptables –I INPUT –s $SCANIP –m state —state NEW,RELATED,ESTABLISHED –j DROP echo “`date` $SCANIP($NUMBER)” >> /root/script/scanip.log fi done |
Linux系统中,可能需先运行类似下面的命令:
mv ssh_deny.sh.txt ssh_deny.sh
dos2unix ssh_deny.sh
发表回复