通过Shell脚本防止暴力SSH破解
原文转载自MT大神的博客:https://blog.51cto.com/14839701/2551984
简介
我们平时在登录拥有外网ip的服务器的时候,经常会看到服务器莫名被别人被扫端口恶意登录很多次了
There were 56 failed login attempts since the last successful login.
很烦是不是,虽然密码比较复杂,也有防火墙,但难保有些人就是会恶意的一直尝试,所以,最简单的测试,写个脚本,定期的搜集一批IP黑名单,操作如下
cat /usr/local/sbin/secure_ssh.sh #! /bin/bash #从secure文件中提取反复登录失败的IP名单作为黑名单列表并统计次数 #格式大概是这样 36.37.122.47=22 IP=次数 cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/sbin/blackList.txt #一旦当前IP超过20次尝试,就关小黑屋 for i in `cat /usr/local/sbin/blackList.txt` do IP=`echo $i |awk -F= '{print $1}'` NUM=`echo $i|awk -F= '{print $2}'` if [ $NUM -gt 20 ];then grep $IP /etc/hosts.deny > /dev/null if [ $? -gt 0 ];then echo "sshd:$IP:deny" >> /etc/hosts.deny echo "新增异常IP: $IP" >> /usr/local/sbin/secure_ssh.log fi fi done
偶尔运行一次肯定是不解气的,写个crontab定时执行吧
#代表每五分钟执行一次
echo "*/5 * * * * root bash /usr/local/sbin/secure_ssh.sh" >> /etc/crontab
最后可以在 /etc/hosts.deny 文件中查看效果哦。
总结
当然,最好还是定期更换密码或者证书,防火墙限制端口,限制来源等等措施做起来
才是一劳永逸之策
MT大神是我追随多年的一位技术大牛,最近新建了博客,大家可以去关注 https://blog.51cto.com/14839701
正在加载评论...