简介
我们平时在登录拥有外网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 文件中查看效果哦。
总结
当然,最好还是定期更换密码或者证书,防火墙限制端口,限制来源等等措施做起来
才是一劳永逸之策