提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100
即调用防火墙命令封掉对应的IP,监控频率每隔3分钟
防火墙命令为:iptables -A INPUT -s 10.0.1.10 -j DROP
思路:
1.分析日志,提取IP和PV数
2.while语句,读取提取到的IP和PV数,并实现3分钟循环一次
3.调用防火墙命令
用while读取日志方法:
1.cat a.log | while read line
do
done
2.exec<a.log | while read line
do
done
3.while read line
do
done<a.log
脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#!/bin/bash
#Author: liuwei
#Site: www.51liuzw.com
while
true
do
#cat 12_01.log | awk '{print $1}' | sort | uniq -c > a.log
netstat
-an |
grep
ESTAB |
awk
-F
"[ :]+"
'{print $6}'
|
sort
|
uniq
-c > b.log
exec
<a.log
while
read
line
do
pv=`
echo
$line |
awk
'{print $1}'
`
ip=`
echo
$line |
awk
'{print $2}'
`
if
[ $pv -gt 5 ] && [ `iptables -L -n |
grep
$ip |
wc
-l` -
eq
0 ];
then
iptables -A INPUT -s $ip -j DROP
fi
done
sleep
180
done
|
实现思路:
1.根据日志提取ip和pv数,或者根据网络连接数提ip和pv
2.判断当pv大于你所能接受的最大值时,把此ip加入防火墙中
3.可以结合crontab实现每3分钟执行一次
知识点:
awk -F "[ :]+"
-F:指定分隔符时,需要添加此选项
[ :]+ :以空格或者冒号为分隔符,+表示空格或者冒号最少出现一次
本文转自激情燃烧的岁月博客51CTO博客,原文链接http://blog.51cto.com/liuzhengwei521/1773802如需转载请自行联系原作者
weilovepan520