linux下shell脚本防ssh暴力破解
·
文章出处:http://coolnull.com/2059.html
说明:
本篇实现shell统计访问失败的IP和次数,从而根据这些再通过防火墙规则来限制这些IP再次暴破,脚本如下:
实现:
1.编写shell脚本
# cat /root/ssh_failed.sh //内容如下
#!/bin/sh
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 "`/sbin/iptables -vnL INPUT | grep $SCANIP`" ]
then
/sbin/iptables -I INPUT -s $SCANIP -m state --state NEW,RELATED,ESTABLISHED -j DROP
echo "`date` $SCANIP($NUMBER)" >> /var/log/scanip.log
fi
done由于/var/log/secure是以星期为轮询的,所以我们每次可以查看这个文件,利用shell脚本统计出其中访问失败比较频繁的IP,并定义一个阀值为10(可自行修改为合适的值),如果超过这个阀值并且查看防火墙列表中有没有这条IP的记录,如果没有则添加相应防火墙规则,阻止此IP进行SSH登录,每隔一段时间进行一次检查,如果下次排查的某IP次数又大于10,并且检查它在不在我们的防火墙列表中,如果在的话就无视过去;如果不在,就继续添加进iptables中。然后我们定义一个计划任务,让每一个小时检测一次
2.将/root/scan_sshd_linux.sh添加至crontab,一小时执行一次
# crontab -e //在末尾添加以下内容
0 */1 * * * /bin/sh /root/scan_sshd_linux.sh当然也有的朋友说了,可以将这些IP写入/etc/hosts.deny中,也不是不可以,总之方法是有很多,看个人喜好了!~
测试截图:
暂空!后期补上
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)