您好,欢迎光临系统之家!

系统之家 - 为您打造全网最优秀的系统论坛!

 找回密码
 注册
搜索

CentOS和ubuntu通用防止 SSH 暴力破解脚本

查看: 196|回复: 0

[教程] CentOS和ubuntu通用防止 SSH 暴力破解脚本 [复制链接]

Rank: 64Rank: 64Rank: 64Rank: 64

UID
5
帖子
6545
威望
4296 点
黄金
10511 金币
在线时间
4518 小时
注册时间
2005-5-13
最后登录
2020-9-22

终身成就奖 宣传大使奖

发表于 2020-1-3 16:42:22 |显示全部楼层
原理是酱婶儿地:过去3500次登陆失败记录里提取超过7次的ip加到hosts.deny中
  1. #!/bin/bash
  2. cat /dev/null > /etc/hosts.deny
  3. lastb -3500|awk '/ssh/{print $3}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/blackip.txt
  4. DEFINE="7"
  5. for i in `cat /root/blackip.txt`
  6. do
  7.         IP=`echo $i |awk -F= '{print $1}'`
  8.         NUM=`echo $i|awk -F= '{print $2}'`
  9.         if [ $NUM -gt $DEFINE ];
  10.         then
  11.           echo "sshd:$IP" >> /etc/hosts.deny
  12.         fi
  13. done
复制代码
使用方法:比如可以把脚本保存为protectssh.sh,记得要加可执行权限。
  1. chmod +x protectssh.sh
复制代码
然后可以加到计划任务中每10分钟执行一次。
  1. */10 * * * * /root/protectssh.sh
复制代码
现实世界中,坏人往往都集中在同一个ip段,所以可以查看hosts.deny后用iptable一绝后患。
  1. iptables -I INPUT -s xxx.xxx.0.0/16 -j DROP
复制代码
关于有些版本的linux比如ubuntu14在lastb查看时,IP列显示反dns,
那么可以直接读取登陆日志,lastb一行变成:
  1. tail -20000 /var/log/auth.log | awk '/: Failed password for invalid/{print $13}' > /root/countip.txt
  2. tail -20000 /var/log/auth.log | awk '/: Failed password for root/{print $11}' >> /root/countip.txt
  3. sort /root/countip.txt|uniq -c|awk '{print $2"="$1;}' > /root/blackip.txt
复制代码
中华人民共和国宪法第四十条:
中华人民共和国公民的通信自由和通信秘密受法律的保护。

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

回顶部