以centos7.x为例,/var/log/btmp
文件用于记录失败的登录尝试信息,默认由lastb命令查看。
# 查看最近30条登录失败记录
lastb -n 30
1、查看登录SSH失败4次以上的记录
lastb |awk '{print $3}'|sort |uniq -c|awk '{if ($1 > 4) print $2}'
2、创建脚本文件
touch /home/xxx/ssh_deny.sh
3、脚本内容
#!/bin/bash
#set -x
list=$(sudo lastb |awk '{print $3}'|sort |uniq -c|awk '{if ($1 > 4) print $2}')
for ip in ${list}
do
echo ALL: ${ip} >> /etc/hosts.deny #加入黑名单
echo > /var/log/btmp #清空失败记录,防止脚本下次执行重复统计IP
done
4、对已经有的bmtp文件中的内容扫描一次,测试下脚本是否可以将重复登录失败4次以上的ip添加到黑名单文件中
sh /home/xxx/ssh_deny.sh
5、添加脚本任务
crontab -e
#内容为每1小时执行一次脚本
* */1 * * * sudo bash /home/xxx/ssh_deny.sh