使用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]