Linux 服务器自动拉黑ssh登录失败的IP

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近有的人很闲,在网上到处攻击,今天一看一晚上失败登录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

完成
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三千院喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值