Linux安全-动态黑名单-动态修改/etc/hosts.deny拒绝远程ssh暴力破解

部署在公网的服务器,一直遭受攻击
在这里插入图片描述
查看登录日志tail -f /var/log/secure
可以看到一直有ip在恶意攻击

简单写个脚本,统计失败登录的ip加入黑名单

1 查找出错误登录的日志
cat /var/log/secure | awk '/^.*(F|f)ailed.*/'|head -n 10

在这里插入图片描述

2 从结果中过滤出ip
cat /var/log/secure | awk '/^.*(F|f)ailed.*/'|egrep "from ([0-9]+.){3}[0-9]+" -o

在这里插入图片描述

3 替换为符合/etc/hosts.deny格式
tac /var/log/secure | awk '/^.*(F|f)ailed.*/'|egrep "from ([0-9]+.){3}[0-9]+" -o|sed 's#from #sshd:#g'

这里只禁用sshd服务
在这里插入图片描述

4 统计登录失败ip数量,并按失败次数归类
tac /var/log/secure | awk '/^.*(F|f)ailed.*/'|egrep "from ([0-9]+.){3}[0-9]+" -o|sed 's#from #sshd:#g'  |sort | uniq -c | sort -nr

在这里插入图片描述

5 最终脚本
#!/bin/sh

tac /var/log/secure | awk '/^.*(F|f)ailed.*/'|egrep "from ([0-9]+.){3}[0-9]+" -o|sed 's#from #sshd:#g'  |sort | uniq -c | sort -nr > /data/tempip
#登录失败次数超过10次的ip
ip=`cat /data/tempip | awk '{if($1>10)print $2}'`
for line in $ip
do
    result=$(grep $line /etc/hosts.deny)
#判断ip是否已经被屏蔽
    if [ -z "$result" ]; then
#未屏蔽的ip进行屏蔽
        echo "$line" >> /etc/hosts.deny
    fi
done

6 添加定时任务
*/1 * * * * /bin/bash /data/blackip.sh
7 最终效果

查看登录日志
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值