- 功勋
- 689 点
- 积分
- 5865
- 阅读权限
- 200
- 精华
- 13
- UID
- 5
- 帖子
- 6562
- 威望
- 4312 点
- 黄金
- 10544 金币
- 在线时间
- 4573 小时
- 注册时间
- 2005-5-13
- 最后登录
- 2025-12-15
   
- UID
- 5
- 帖子
- 6562
- 威望
- 4312 点
- 黄金
- 10544 金币
- 在线时间
- 4573 小时
- 注册时间
- 2005-5-13
- 最后登录
- 2025-12-15
|
原理是酱婶儿地:过去3500次登陆失败记录里提取超过7次的ip加到hosts.deny中- #!/bin/bash
- cat /dev/null > /etc/hosts.deny
- lastb -3500|awk '/ssh/{print $3}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/blackip.txt
- DEFINE="7"
- for i in `cat /root/blackip.txt`
- do
- IP=`echo $i |awk -F= '{print $1}'`
- NUM=`echo $i|awk -F= '{print $2}'`
- if [ $NUM -gt $DEFINE ];
- then
- echo "sshd:$IP" >> /etc/hosts.deny
- fi
- done
复制代码 使用方法:比如可以把脚本保存为protectssh.sh,记得要加可执行权限。然后可以加到计划任务中每10分钟执行一次。- */10 * * * * /root/protectssh.sh
复制代码 现实世界中,坏人往往都集中在同一个ip段,所以可以查看hosts.deny后用iptable一绝后患。- iptables -I INPUT -s xxx.xxx.0.0/16 -j DROP
复制代码 关于有些版本的linux比如ubuntu14在lastb查看时,IP列显示反dns,
那么可以直接读取登陆日志,lastb一行变成:- tail -20000 /var/log/auth.log | awk '/: Failed password for invalid/{print $13}' > /root/countip.txt
- tail -20000 /var/log/auth.log | awk '/: Failed password for root/{print $11}' >> /root/countip.txt
- sort /root/countip.txt|uniq -c|awk '{print $2"="$1;}' > /root/blackip.txt
复制代码 |
|