通过Shell脚本防止暴力SSH破解

简介

       我们平时在登录拥有外网ip的服务器的时候,经常会看到服务器莫名被别人被扫端口恶意登录很多次了

There were 56 failed login attempts since the last successful login.

       很烦是不是,虽然密码比较复杂,也有防火墙,但难保有些人就是会恶意的一直尝试,所以,最简单的测试,写个脚本,定期的搜集一批IP黑名单,操作如下

cat /usr/local/sbin/secure_ssh.sh
#! /bin/bash
#从secure文件中提取反复登录失败的IP名单作为黑名单列表并统计次数
#格式大概是这样  36.37.122.47=22   IP=次数
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/sbin/blackList.txt

#一旦当前IP超过20次尝试,就关小黑屋
for i in `cat  /usr/local/sbin/blackList.txt`
do
  IP=`echo $i |awk -F= '{print $1}'`
  NUM=`echo $i|awk -F= '{print $2}'`
   if [ $NUM -gt 20 ];then
      grep $IP /etc/hosts.deny > /dev/null
    if [ $? -gt 0 ];then
      echo "sshd:$IP:deny" >> /etc/hosts.deny
      echo "新增异常IP: $IP" >> /usr/local/sbin/secure_ssh.log
    fi
  fi
done

偶尔运行一次肯定是不解气的,写个crontab定时执行吧

#代表每五分钟执行一次

echo "*/5 * * * * root bash /usr/local/sbin/secure_ssh.sh" >> /etc/crontab

最后可以在 /etc/hosts.deny 文件中查看效果哦。

总结

当然,最好还是定期更换密码或者证书,防火墙限制端口,限制来源等等措施做起来
才是一劳永逸之策

猜你喜欢

转载自blog.51cto.com/14839701/2551984