posir 发表于 2018-8-26 08:28:58

使用Shell 脚本防止SSH暴力破解

#/bin/bash  
#OS:CentOS 6.7
  
#
  
#
  
#定义一个登录失败的次数,如果超过这数字就把这个ip加入到/etc/hosts.deny文件上
  
DefineTimes="3"
  
ToDay=`date +"%y-%m-%d"`
  
#过滤/var/log/secure 日志文件,把里面登录失败的ip过滤出来并且排序、汇总失败的次数,重定向到一个文件上,
  
#然后通过for循环把ip地址和错误次数过滤出来,并个设定的错误次数对比,如果超过了,就到/etc/hosts.deny
  
#文件上匹配,如果有,$?的返回值会大于0,然后就把这IP追加到/etc/hosts.deny文件上,从而达到拒绝多次失败的登录链接。
  
cat /var/log/secure |awk '/Failed/ {print $(NF-3)}'|sort|uniq -c |awk '{print $2 ":" $1;}' > /data/Ssh_login_Failed_ip_${ToDay}_.txt
  
for i in `cat /data/Ssh_login_Failed_ip_${ToDay}_.txt`
  
do
  
Failed_IP=`echo $i |awk -F ':' '{print $1}'`
  
Failed_Num=`echo $i |awk -F ':' '{print $2}'`
  
if [ $Failed_Num -gt $DefineTimes ]
  
    then
  
      grep $Failed_IP /etc/hosts.deny > /dev/null
  
      if [ $? -gt 0 ]
  
      then
  
          echo "sshd:$Failed_IP" >> /etc/hosts.deny
  
      fi
  
fi
  
done


页: [1]
查看完整版本: 使用Shell 脚本防止SSH暴力破解