您的位置:首页 > 运维架构

监控访问日志使用iptables禁止IP访问

2014-02-15 19:44 351 查看
因为应用的漏洞,导致有用户频繁请求漏洞页面,增加服务器的开销甚至出现无法提供服务。所以想编写一个脚本,监控apache日志,对请求量不符合正常场景的用户,通过iptables封掉IP。实现规则:
1、shell脚本监控apache日志,通过iptables封堵用户IP,每5秒执行一次
2、iptables每30分钟清空一次iptables规则

#! /bin/bash
iptables=/sbin/iptables
blacklist() {
DAY=`date +"%y%m%d"`
TIME=`date +"%Y%m%d %H:%M:%S"`
http_who()
{
tail -1000 /usr/local/apache/logs/bvc-access-${DAY}.log|awk '{name[$1]++ }; END {for (count in name) print count,name[count]}' |sort -k2 -rn|awk '{print $1"="$2;}'
}
for _un in $(http_who)
do
IP=`echo $_un|gawk -F'=' '{print $1}'`
NUM=`echo $_un|awk -F'=' '{print $2}'`
if [ $NUM -gt 100 ] && [ -z "`iptables -L -n|grep "$IP"`" ]
then
iptables -I RH-Firewall-1-INPUT -p tcp -m tcp -s "$IP" -j DROP
echo "$TIME WEB $IP NUM: $NUM" >> /var/log/fuck.log
fi
done
}
while [ : ]
do
blacklist
#tail -n 5 /var/log/fuck.log
#echo ""
sleep 5
done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  服务器 监控 用户