Linux 系统防止ssh登录密码的暴力破解



今天检查服务器的secure安全日志的时候,发现有几个IP在不断的通过ssh远程登录root用户,平均3s请求一次,这明显是遭遇到ssh登录密码的暴力破解。

所以添加了一个shell脚本,一小时内如果输入错误达到30次,就将此ip加入iptables中屏蔽。

脚本内容如下:
#!/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

给脚本文件增加执行权限
[root@cloud www]# chmod 755 secure_sh

添加定时执行任务,隔10分钟执行一次
[root@cloud www]# echo "*/10 * * * * root /www/secure_sh" >>/etc/crontab

执行之后抓到了几个ip
[root@cloud www]# cat /var/log/block_ssh.log 
2018-03-28 13:35 : 185.165.29.190
2018-03-28 13:35 : 191.8.80.178
2018-03-28 13:35 : 58.218.198.143
2018-03-28 13:40 : 122.226.181.167


另外最好不要用默认的22端口,建议换成其他端口,可以降低被攻击的风险!

猜你喜欢

转载自blog.csdn.net/yedehei_lt/article/details/80968427