Centos如何设置ip黑名单,防止被攻击

今天在登录自己的华为云的时候,发现一个提示。如下图

大致意思是什么呢?警告就不管了。

看第二行

提示我,上次登录失败是几分钟前,自上次登录成功以来。有11803次登录尝试失败。

我的天。。。明显是有人再用暴力破解的方式在尝试我的密码。至少我不会手动去登录失败1万多次

那么问题来了,如何解决这种问题。最好的办法就是加入黑名单,让他无法进行登录尝试。

centos7用的是firewall 添加单个黑名单只需要把ip添加到 /etc/hosts.deny

我们打开来看看

vim /etc/hosts.deny

发现,这里面是有默认的两个选项。没有任何封禁的ip在内。

第一种方式,就是直接添加ip在这里。

sshd:192.168.1.147:deny

添加在后面,保存退出即可。

第二, 在网上翻来翻去,发现了个不错的脚本。

多次登录失败,既封禁掉ip的脚本,防止暴力破解。超过5次,就添加到黑名单中去。

创建脚本

vim /usr/local/bin/secure_ssh.sh
#! /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

创建一个记录登录失败次数的文件 

touch /usr/local/bin/black.txt

添加一个定时任务,每5分钟执行一次。

crontab -e

添加:

*/5 * * * *  sh /usr/local/bin/secure_ssh.sh

保存退出,搞定。

查看一下黑名单列表是否有记录。

直接吓了一跳。这么个。。

那在看看,哪个记录超过5次了。

发现,上面登录超过6次的,已经被屏蔽掉了。

搞定收工。

猜你喜欢

转载自blog.csdn.net/u012798683/article/details/105658299