前言
我们的ssh登陆很可能会被人暴力破解, 所以我们需要防止这种事情发生.(www.hedaoshe.com)
不管是修改端口, 修改登陆用户名, 等等情况不能阻止别人暴力破解我们服务器.
而应对这种暴力破解我们只有监控登陆用户的行为, 然后根据登陆用户失败的次数来封禁该ip. 这也是我们的最后一道防线.
正文
防暴力破解脚本
我们只需要写一个脚本, 该脚本会提取/var/log/secure
的登陆ip和失败次数. 只要失败次数超过一定限度我们就把该ip丢尽/etc/hosts.deny
中进行封禁.
#! /bin/bash
#先提取secure文件中登陆失败的ip并记录个数, 然后写进blackList.txt文件中
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/sbin/blackList.txt
#遍历该文件内容
for i in `cat /usr/local/sbin/blackList.txt`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
#如果ip登陆失败超过20次,检查/etc/hosts.deny中是否已经包含了该ip
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
该脚本会检查ip失败登陆次数, 如果超过20次, 就会封禁该ip
crontab定时计划
只要配合crontab定时任务就能实现防止暴力破解的风险.
#每五分钟执行一次该脚本
echo "*/5 * * * * root bash /usr/local/sszas/script/prevents-brute-force-cracking.sh" >> /etc/crontab
总结
经过上面的步骤我们就能防止暴力破解, 不过这不是万能的, 为了安全, 我们应该修改端口, 并且禁止root账户登陆, 还应该使密码更复杂.