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

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

 找回密码
 注册
搜索

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

查看: 74|回复: 0

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

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

UID
5
帖子
6506
威望
4263 点
黄金
10439 金币
在线时间
4444 小时
注册时间
2005-5-13
最后登录
2020-2-20

终身成就奖 宣传大使奖

发表于 2020-1-3 16:42:22 |显示全部楼层
原理是酱婶儿地:过去500次登陆失败记录里提取超过5次的ip加到hosts.deny中
  1. #!/bin/bash
  2. cat /dev/null > /etc/hosts.deny
  3. lastb -500|awk '/ssh/{print $3}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/blackip.txt
  4. DEFINE="5"
  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 -5000 /var/log/auth.log | awk '/Failed password for invalid/{print $13}'|sort|uniq -c|awk '{print $2"="$1;}'
复制代码
中华人民共和国宪法第四十条:
中华人民共和国公民的通信自由和通信秘密受法律的保护。

使用道具 举报

发表回复

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

回顶部