本帖最后由 小新 于 2017-12-13 18:02 编辑
这几天,在论坛里发现有不少人都在说暴力破解 的事情。。分享一下一个脚本屏蔽方法。
PS.这个是针对一些对LINUX有一些基础的朋友,会有终端的,全小白,慎重,不过,按下面的流程应该问题不大。。
SSH登陆信息主要是存放在/var/log/secure日志,所以暴力破解,登际失败的都在这里。
动手写个脚本:
#!/bin/bash
LIMIT=30 #这边可以自定义限制次数
LOGFILE="/var/log/block_ssh.log" #日志路径
TIME=$(date '+%b %e %H') #example: Apr 11 11
BLOCK_IP=$(grep "$TIME" /var/log/secure|grep Failed|awk '{print $(NF-3)}'|sort|uniq -c|awk '$1>"$LIMIT"{print $1":"$2}') #将1小时内ssh认证失败超过30次的ip抓出来
for i in $BLOCK_IP
do
IP=$(echo $i|awk -F: '{print $2}')
iptables-save|grep INPUT|grep DROP|grep $IP>/dev/null #先判断下是否已经被屏蔽
if [ $? -gt 0 ];then
iptables -A INPUT -s $IP -p tcp --dport 22 -j DROP #屏蔽ip
NOW=$(date '+%Y-%m-%d %H:%M')
echo -e "$NOW : $IP">>${LOGFILE}
fi
done
基本思路是统计出1小时ssh认证失败超过30次的IP,如果没屏蔽过的就将其加入iptables屏蔽。
这里就不设置白名单了,正常ip在一个小时内不会有那么多的Failed认证。
给予脚本执行权限:
chmod 755 /root/block_ssh.sh
最后加入到crontab定时任务,10分钟运行一次:
echo "*/10 * * * * root /root/block_ssh.sh" >>/etc/crontab
脚本运行一段时间后的日志:
2017-11-13 02:10 : 210.75.241.20
2017-11-13 02:10 : 59.60.7.102
2017-11-13 11:30 : 189.47.32.19
2017-11-13 13:30 : 184.107.119.213
2017-11-13 18:30 : 222.122.20.145
2017-11-14 05:10 : 188.127.226.66
2017-11-14 09:00 : 69.163.33.98
2017-11-14 10:10 : 184.106.165.164
2017-11-14 22:10 : 65.117.150.99
2017-11-15 06:00 : 124.205.252.158
对了,脚本防护SSH的方法在网上有很多,可以自行百度一下。
----------------------------------------
小新Blog 三七保健 保险网
|
|