安全之防ssh暴力破解

IT
IT
IT
335
文章
1
评论
2020年5月21日14:28:10 评论 1,339 1919字阅读6分23秒

博主的博客经常被搞

为啥一直没有被搞掉?

因为博主做了一些安全措施

今天先讲防止被爆菊

打开阿里云盾一看各种被爆破

安全之防ssh暴力破解

 

针对这个现象,不管你是把ssh端口改为别的或者是默认的22端口,都会存在被暴力破解的可能

今天博主就用一个亲测的脚本来打击暴力破解者

shell统计访问失败的IP和次数,从而根据这些再通过防火墙规则来限制这些IP再次暴破

[root@iZ2ze3mxkrdvosnmohl9yvZ ~]# vim ssh.sh

#!/bin/sh 
SCANIP=`grep "Failed" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | awk '{print $1"="$2;}'`
for i in $SCANIP
do
 NUMBER=`echo $i | awk -F= '{print $1}'`
 SCANIP=`echo $i | awk -F= '{print $2}'`
 echo "$NUMBER($SCANIP)" 
 if [ $NUMBER -gt 10 ] && [ -z "`/sbin/iptables -vnL INPUT | grep $SCANIP`" ]
 then
 /sbin/iptables -I INPUT -s $SCANIP -m state --state NEW,RELATED,ESTABLISHED -j DROP
 echo "`date` $SCANIP($NUMBER)" >> /var/log/scanip.log 
 fi 
done

测试版本

#!/bin/sh 
#NGINX=$(egrep "htpasswd" /usr/local/nginx/logs/error.log |awk -F',' '{print $2}' |awk '{print $2}' |sort |uniq -c |awk '$1>20' |awk '{print $1"="$2}') 
#FTP=$(egrep "vsftpd" /var/log/secure |egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}' |sort |uniq -c |awk '$1>20' |awk '{print $1"="$2}') 
#SQUID=$(egrep "TCP_DENIED/407" /var/log/squid/access.log |awk '{print $3}' |sort |uniq -c |awk '$1>30' |awk '{print $1"="$2}') 
SSH=$(egrep "Failed" /var/log/secure |awk '{print $(NF-3)}' |grep ^[1-9] |sort |uniq -c |awk '$1>10' |awk '{print $1"="$2}')  

#循环用iptables拒绝
#for i in $( echo "$SSH $FTP $NGINX $SQUID" |tr -s ' ' '\n')
for i in $SSH
do  
    NUMBER=`echo $i |awk -F= '{print $1}'`   
    SCANIP=`echo $i |awk -F= '{print $2}'`   
    echo "$SCANIP($NUMBER)"  

    if [ -z "`/sbin/iptables -vnL INPUT | grep $SCANIP`" ]   
    then   
        /sbin/iptables -I INPUT -s $SCANIP -j DROP
        ADDRESS=`/usr/bin/curl -s "http://ip138.com/ips138.asp?ip=$SCANIP&action=2"| iconv -f gb2312 -t utf-8|grep '<ul class="ul1"><li>' | awk -F '[<> ]+' '{print $7,$8}' | awk -F: '{print $2}'`
        echo "`date +%-F/%-H:%-M:%-S` $SCANIP($NUMBER) $ADDRESS" >> /var/log/scanip.log
    fi 
done

由于/var/log/secure是以星期为轮询的,所以我们每次可以查看这个文件,利用shell脚本统计出其中访问失败比较频繁的IP,并定义一个阀值为10(可自行修改为合适的值),如果超过这个阀值并且查看防火墙列表中有没有这条IP的记录,如果没有则添加相应防火墙规则,阻止此IP进行SSH登录,每隔一段时间进行一次检查,如果下次排查的某IP次数又大于10,并且检查它在不在我们的防火墙列表中,如果在的话就无视过去;如果不在,就继续添加进iptables中。然后我们定义一个计划任务,让每两分钟检测一次

添加到任务计划

[root@iZ2ze3mxkrdvosnmohl9yvZ ~]# crontab -e

*/2 * * * * /bin/sh ssh.sh

现在开始进行测试

安全之防ssh暴力破解

现在登录直接被拒绝掉,没有任何反应

安全之防ssh暴力破解

 

 

继续阅读
  • 我的QQ
  • QQ扫一扫
  • weinxin
  • 我的头条
  • 头条扫一扫
  • weinxin
IT
  • 本文由 发表于 2020年5月21日14:28:10
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
Eureka同步到nacos Nacos

Eureka同步到nacos

官方介绍文档地址 https://nacos.io/zh-cn/docs/nacos-sync.html 官方安装文档地址 https://nacos.io/zh-cn/docs/nacos-sync...
Eureka指定应用的instanceId为IP CentOS

Eureka指定应用的instanceId为IP

痛点 现在所有的应用指定的是服务器默认机器名称,对查看是哪一个服务IP或者单节点自动剔除服务不友好。 像如上图所示,想知道是哪一个节点,还得点开才能获取IP。 改造 全部改成自动获取服务器IP为ins...
阿里云网盘 CentOS

阿里云网盘

申请内测地址 https://survey.aliyun.com/apps/zhiliao/_o6XQjioM 官网地址 https://www.teambition.com/products/pan...
GitLab或Jenkins集成构建工具 CentOS

GitLab或Jenkins集成构建工具

集成构建工具 构建工具是用来将代码编译打包成制品的工具。例如前端项目我们一般使用npm进行打包,后端java项目我们一般使用maven、gradle进行打包。构建工具很多很多,但是集成到gitlab中...