公司的网站服务器,平时访问不大,但是每次从凌晨开始到八点多左右,网站后台会受到很多暴力破解帐号的攻击,造成网站到晚上了nagios频繁报警。
处理方法:
根据access.log的访问记录,每个20分钟统计一次,如果访问次数logging.php在100次以上,封掉IP;当然awk条件匹配的时候,你可以加上错误代码..
#!/bin/bash
# cron 01:00 - 08:00 / 20
#set -x
_FILE='/home/logs/access_****.log'
awk '/logging.php/{stat[$1]++}END{for(i in stat){if(stat[i] >= '100')print i}}' $_FILE >>/tmp/badip.$(date +%F).txt
for ip in `sort -u /tmp/badip.$(date +%F).txt`
do
if /sbin/iptables -nL|grep DROP|grep $ip >/dev/null 2>&1 ;then
:
else
/sbin/iptables -I INPUT 10 -s $ip -j DROP
[ $? == 0 ] && echo "Time: $(date +"%F %T") : $ip" >> /root/ycan/drop_record.txt
fi
done
2. 添加到计划任务
*/20 00-08 * * * /root/ycan/badip.sh