天天看点

解决DOS攻击生产案例

提示:

根据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 &gt; </code><code>/tmp/tmp</code><code>.log</code>

<code>  </code><code>exec</code> <code>&lt;</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 ] &amp;&amp; [ `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>&gt;&gt;</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