Centos如何设置ip黑名单,防止被攻击
今天在登录自己的华为云的时候,发现一个提示。如下图
大致意思是什么呢?警告就不管了。
看第二行
提示我,上次登录失败是几分钟前,自上次登录成功以来。有11803次登录尝试失败。
我的天。。。明显是有人再用暴力破解的方式在尝试我的密码。至少我不会手动去登录失败1万多次
那么问题来了,如何解决这种问题。最好的办法就是加入黑名单,让他无法进行登录尝试。
centos7用的是firewall 添加单个黑名单只需要把ip添加到 /etc/hosts.deny
我们打开来看看
1 | vim /etc/hosts.deny |
发现,这里面是有默认的两个选项。没有任何封禁的ip在内。
第一种方式,就是直接添加ip在这里。
1 | sshd:192.168.1.147:deny |
添加在后面,保存退出即可。
第二, 在网上翻来翻去,发现了个不错的脚本。
多次登录失败,既封禁掉ip的脚本,防止暴力破解。超过5次,就添加到黑名单中去。
创建脚本
1 | vim /usr/local/bin/secure_ssh.sh |
1 2 3 4 5 6 7 8 9 10 11 12 13 | #! /bin/bash cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.txt for i in `cat /usr/local/bin/black.txt` do IP=`echo $i |awk -F= '{print $1}'` NUM=`echo $i|awk -F= '{print $2}'` if [ $NUM -gt 5 ];then grep $IP /etc/hosts.deny > /dev/null if [ $? -gt 0 ];then echo "sshd:$IP:deny" >> /etc/hosts.deny fi fi done |
创建一个记录登录失败次数的文件
1 | touch /usr/local/bin/black.txt |
添加一个定时任务,每5分钟执行一次。
1 | crontab -e |
添加:
1 | */5 * * * * sh /usr/local/bin/secure_ssh.sh |
保存退出,搞定。
查看一下黑名单列表是否有记录。
直接吓了一跳。这么个。。
那在看看,哪个记录超过5次了。
发现,上面登录超过6次的,已经被屏蔽掉了。
搞定收工。
网友留言(0 条)