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

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

 找回密码
 注册
搜索

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

查看: 52|回复: 0

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

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

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

终身成就奖 宣传大使奖

发表于 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;}'
复制代码
郑重声明:
1. 本人过去、现在以及将来都不认识楼主,且自古以来与楼主无利益关系。
楼主表述之事与本人无关,只是本着"看贴回贴,利人利己的中华民族优秀传统美德",顺便凑个热闹.
2. 本人在此留言均为网络上复制,用于检验电脑键盘录入、屏幕显示的机械、光电性能。
并不代表本人局部或全部同意、支持或者反对楼主观点。

使用道具 举报

发表回复

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

回顶部