提示:
根据web日志或者网络连接数,监控当某个ip并发数或者短时内PV达到100,即调命令封掉对应的ip,监控频率每隔3分钟。防火墙命令为:iptables -A INPUT -s 10.0.1.10 -J drop
解答:
web,也可以分析日志,把单IP PV数高的封掉。按天定义PV=1000即封掉
<code>#!/bin/bash</code>
<code>while</code> <code>true</code>
<code>do</code>
<code> </code><code>awk</code> <code>'{print $1}'</code> <code>access.log|</code><code>grep</code> <code>-</code><code>v</code> <code>"^$"</code><code>|</code><code>sort</code><code>|</code><code>uniq</code> <code>-c > </code><code>/tmp/tmp</code><code>.log</code>
<code> </code><code>exec</code> <code><</code><code>/tmp/tmp</code><code>.log</code>
<code> </code><code>while</code> <code>read</code> <code>line</code>
<code> </code><code>do</code>
<code> </code><code>ip=`</code><code>echo</code> <code>$link|</code><code>awk</code><code>'{print $2}'</code><code>`</code>
<code> </code><code>count=`</code><code>echo</code> <code>$line|</code><code>awk</code> <code>'{print $1}'</code><code>`</code>
<code> </code><code>if</code> <code>[ $count -gt 3 ] && [ `iptables -L -n|</code><code>grep</code> <code>"$ip"</code><code>|</code><code>wc</code> <code>-l` -lt 1 ]</code>
<code> </code><code>then</code>
<code> </code><code>iptables -I INPUT -s $ip -j DROP</code>
<code> </code><code>echo</code> <code>"$line is dropped"</code> <code>>></code><code>/tmp/droplist</code><code>.log</code>
<code> </code><code>fi</code>
<code> </code><code>done</code>
<code> </code><code>sleep</code> <code>5</code>
<code>done</code>
本文转自 baishuchao 51CTO博客,原文链接:http://blog.51cto.com/baishuchao/1943942