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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。