感谢该脚本的原创者,我只是纠正了一些错误,添加了几行说明,并测试成功。
该脚本适用于密码验证的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
#!/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
附件中的脚本文件是有DOS换行符(CR/LF)的,复制文件中的内容到一般的SSH客户端没有问题,如果直接拷贝文件到Linux系统中,可先运行下面的命令:
mv ssh_deny.sh.txt ssh_deny.sh
dos2unix ssh_deny.sh
原文:http://www.zhaoyanan.cn/use-iptables-to-prevent-ssh-brute-force.html
转载于:https://blog.51cto.com/zhaoyanan/523689