SSH防暴力破解shell脚本


    写的一个SSH的防暴力破解脚本。

    原理是检测SSH连接日志,过滤登录失败的IP,超过登录次数就将其添加进hosts.deny文件中,限制其登录。

    脚本如下:

    

#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/black.txt
DEFINE="10"
for i in `cat  /root/black.txt`
do
        IP=`echo $i |awk -F= '{print $1}'`
        NUM=`echo $i|awk -F= '{print $2}'`
        if [ $NUM -gt $DEFINE ];
        then
         grep $IP /etc/hosts.deny > /dev/null
          if [ $? -gt 0 ];
          then
          echo "sshd:$IP" >> /etc/hosts.deny
          fi
        fi
done


注意,Ubuntu和CentOS的SSH日志文件路径不一样:

/var/log/auth.log Ubuntu是这个文件

/var/log/secure CentOS是这个文件


然后添加进任务计划:

CentOS:

echo "* */1 * * * root sh /root/ssh_deny.sh" >> /var/spool/cron/root


Ubuntu:

echo "* */1 * * * root sh /root/ssh_deny.sh > /dev/null 2>&1" >> /var/spool/cron/crontabs/root
crontab /var/spool/cron/crontabs/root

由于Ubuntu默认的shell是dash,导致crontab不运行,我们就将默认shell改为bash就好了。

 rm /bin/sh
 ln -s /bin/bash /bin/sh




你可能感兴趣的:(脚本,ssh,暴力破解)