近来发现有ip恶意扫描服务器,写个脚本自动对恶意攻击的ip进行封禁。主要原理是定期crontab任务分析secure日志(扫描尝试登陆的会有错误日志),超过错误次数就将其加入iptables DROP 链接。可以在一定程度上访问恶意攻击提供,安全性。附上脚本(代码另存为/root/block_ssh.sh
。执行echo "*/5 * * * * root /root/block_ssh.sh" >>/etc/crontab
每5分钟检查一次文件。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#!/bin/bash #echo "*/5 * * * * root /root/block_ssh.sh" >>/etc/crontab LIMIT=30 LOGFILE="/data/block_ip.log" TIME=$(date '+%b %e %H') BLOCK_IP=`perl -lane 'print $F[-4] if /Failed password/' /var/log/secure|sort|uniq -c|perl -lane 'print "$F[0]:$F[1]" if ($F[0] > "'$LIMIT'")'` for i in $BLOCK_IP do echo $i IP=`echo $i|perl -F: -lane 'print $F[1]'` echo $IP iptables-save|grep INPUT|grep DROP|grep $IP>/dev/null #先判断下是否已经被屏蔽 if [ $? -gt 0 ];then iptables -I INPUT -s $IP -j DROP #屏蔽ip NOW=$(date '+%Y-%m-%d %H:%M') echo -e "$NOW : $IP" >>${LOGFILE} fi done |