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