设计思路
- 最近隐隐感觉服务器正在被攻击,查看下登陆失败记录,果然有几页失败记录,于是查了一晚上资料,写了份实操如下:
- 防止服务器被暴力破解,给服务器添加脚本:每小时检查是否有登录失败的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运行
- 脚本名为
sudo crontab -e
#内容为每1小时执行一次脚本
* */1 * * * sudo bash /home/xxx/ssh_deny.sh
- 输入以下代码,查看自动任务是否设置完毕:
sudo crontab -l
# 输出结果:
# #内容为每1小时执行一次脚本
# * */1 * * * sudo bash /home/xxx/ssh_deny.sh
# 搞定!
标签:ubuntu20.04,脚本,deny,ip,sudo,print,封禁,bash
From: https://blog.csdn.net/u011453680/article/details/136759449