=============================
#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/black.txt
awk '/no such user/' /var/log/secure|awk '{print $7}'|cut -d ":" -f4|sed "s/\[//g"|sort|uniq -c|awk '{print $2"="$1;}' >> /root/black.txt
DEFINE="5"
for i in `cat /root/black.txt`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt $DEFINE ];
then
/sbin/iptables -L -n|awk '{print $4}'|grep [0-9]|sort|uniq>/root/ipbad.list
# grep $IP /etc/hosts.deny > /dev/null
grep $IP /root/ipbad.list > /dev/null
if [ $? -gt 0 ];
then
/sbin/iptables -A INPUT -s $IP -p tcp --dport 21 -j DROP
/sbin/iptables -A INPUT -s $IP -p tcp --dport 20 -j DROP
echo "sshd:$IP" >> /etc/hosts.deny
fi
fi
done
======================
以上内容写入/home/denyip.sh
放定时任务执行
*/1 * * * * /home/denyip.sh
由于iptbales会越来越大,建议定期执行iptables -F,可以根据实际需要来配置
此脚本提供思路
本文转自it你好 51CTO博客,原文链接:http://blog.51cto.com/itnihao/834948,如需转载请自行联系原作者