ubuntu20.04 自动封禁恶意ip的代码与设计思路
【代码】ubuntu20.04自动封禁恶意ip代码与设计思路。
·
设计思路
- 最近隐隐感觉服务器正在被攻击,查看下登陆失败记录,果然有几页失败记录,于是查了一晚上资料,写了份实操如下:
- 防止服务器被暴力破解,给服务器添加脚本:每小时检查是否有登录失败超过10次的ip,如果有就封禁该ip
代码
- 首先通过以下命令,查看登陆失败超过4次的ip:
sudo lastb |awk '{print $3}'|sort |uniq -c|awk '{if ($1 > 4) print $2}'
- 将以上的ip添加到ubuntu的ip黑名单下,黑名单文件为
hosts.deny在/etc目录下 - 写一个能自动添加ip到黑名单文件的脚本,把脚本放在
/home/xxx目录下,脚本代码如下:
#!/bin/bash
#登录失败次数大于10的ip
IP=$(sudo lastb |awk '{print $3}'|sort |uniq -c|awk '{if ($1 > 10) print $2}')
hostdeny=/etc/hosts.deny
for i in $IP
do
#如果ip不存在黑名单文件中,则写入deny文件,避免重复写入
if [ ! $(grep $i $hostdeny) ];then
echo "ALL: $i" >> $hostdeny
fi
done
- 给脚本设置每小时执行一次,在控制台输入代码,如下:
- 脚本名为
ssh_deny.sh,只能用bash运行 - 注意:xxx为具体用户名
- 脚本名为
sudo crontab -e
#内容为每1小时执行一次脚本
0 * * * * sudo bash /home/hz/ssh_deny.sh
- 输入以下代码,查看自动任务是否设置完毕:
sudo crontab -l
# 输出结果:
# #内容为每1小时执行一次脚本
# 0 * * * * sudo bash /home/hz/ssh_deny.sh
注意
- 如果我们是在windows下编写的.sh文件,那么需要将它转换为linux格式,在控制台输入以下代码:
sudo vim /home/xxx/ssh_deny.sh
- 打开文件后,按ESC,输入
:set ff=unix,敲回车,转换格式 - 再按ESC,输入
:wq!,敲回车,保存文件
参考文献
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)