最近有的人很闲,在网上到处攻击,今天一看一晚上失败登录517个

查了一下资料发现/etc/hosts.deny这个文件是存放ssh登录黑名单的文件

而lastb可以查看登录失败的记录
下面配置参考了https://blog.csdn.net/weixin_52270081/article/details/121496140
列出登录失败的IP记录
执行lastb -n 30就列出了登录失败的最后30条记录

过滤出IP地址
那么我们需要这里的IP信息,位于使用空格隔开的第三列,那么可以使用awk命令过滤出来
lastb -n30 |awk '{print $3}'

加上sort排序

统计出IP出现的次数
使用uniq -c过滤出出现的次数

过滤出次数大于3次的IP
最后使用awk 过滤出次数大于3次的IP
lastb -n30 |awk '{print $3}'|sort|uniq -c|awk '{if ($1>3) print $2}'

解除30的限制后IP便多了出来
lastb |awk '{print $3}'|sort|uniq -c|awk '{if ($1>3) print $2}'

编写脚本定期将登录失败的IP添加进入黑名单
最后就是编写脚本定期将登录失败的IP添加进入黑名单中
# 获取列表
iplist=$(/bin/lastb |awk '{print $3}'|sort|uniq -c|awk '{if ($1>3) print $2}')
# 追加到黑名单并清空登录日志
for ip in ${iplist}
do
echo ALL: ${ip} >> /etc/hosts.deny
echo > /var/log/btmp
done
添加到定时任务每小时执行
crontab -e
* */1 * * * sh /opt/mysh/banip.sh
完成

本文介绍了如何通过分析系统登录失败记录,利用`/etc/hosts.deny`和`lastb`命令,结合`awk`和`uniq-c`过滤及统计IP地址,从而识别并阻止频繁尝试登录的可疑IP。通过编写脚本并将该过程自动化,可以每小时更新SSH黑名单,提高系统安全性。
1570

被折叠的 条评论
为什么被折叠?



