以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
最后修改:2024 年 11 月 23 日
如果觉得我的文章对你有用,请随意赞赏