<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[利用脚本查看nginx频繁访问IP]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[服务器技术]]></category>
<pubDate>Tue, 28 Dec 2010 01:47:27 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	Nginx+iptables屏蔽访问Web页面过于频繁的IP(防DDOS，恶意访问，采集器)<br/><br/>通过分析nginx的日志来过滤出访问过于频繁的IP地址，然后添加到nginx的blockip.conf，并重启nginx<br/>脚本如下:<br/><div class="code"><br/>#!/bin/sh<br/>nginx_home = /Data/app_1/nginx<br/>log_path = /Data/logs<br/>/usr/bin/tail -n50000 $log_path/access.log &#92;<br/>&#124;awk ‘$8 ~/aspx/&#123;print $2,$13&#125;’ &#92;<br/>&#124;grep -i -v -E “google&#124;yahoo&#124;baidu&#124;msnbot&#124;FeedSky&#124;sogou” &#92;<br/>&#124;awk ‘&#123;print $1&#125;’&#124;sort&#124;uniq -c &#124;sort -rn &#92;<br/>&#124;awk ‘&#123;if($1&gt;150)print “deny “$2″;”&#125;’&gt; $nginx_home/conf/vhosts/blockip.conf<br/>/bin/kill -HUP `cat $nginx_home/nginx.pid`<br/></div><br/>也可以通过分析nginx日志过滤出频繁访问IP，直接用iptables屏蔽这个IP，就用不着重启nginx了，并且屏蔽效果更好。<br/>单个IP的命令是<br/>iptables -I INPUT -s 124.115.0.199 -j DROP<br/><br/>封IP段的命令是<br/>iptables -I INPUT -s 124.115.0.0/16 -j DROP<br/>封整个段的命令是<br/>iptables -I INPUT -s 194.42.0.0/8 -j DROP<br/>封几个段的命令是<br/>iptables -I INPUT -s 61.37.80.0/24 -j DROP<br/>iptables -I INPUT -s 61.37.81.0/24 -j DROP<br/>刚才不小心搞的自己都连不上了-_-!!!<br/>iptables -I INPUT -p tcp –dport 80 -s 124.115.0.0/24 -j DROP<br/>以后用这种只封80端口就行了，不会出问题!<br/>iptables -I INPUT -p tcp –dport 80 -s 124.115.0.0/24 -j DROP<br/>iptables -I INPUT -s 61.37.81.0/24 -j DROP<br/>解封<br/>iptables -F<br/>清空<br/>iptables -D INPUT 数字<br/><br/> <br/><br/>方法二：<br/><br/> <br/><br/>利用脚本查看nginx频繁访问IP<br/><br/>这个一个统计，那个IP过于频繁的访问您的web服务器,通过分析nginx的日志得到的结果：<br/><div class="code"><br/>#!/bin/bash<br/>#这是一个统计一段时间内访问web的IP的脚本，按照每个IP的访问次数排列<br/>#定义变量<br/>LINE=$1<br/>DIR=$2<br/>tail -n$LINE $DIR&gt;tmp.txt<br/>cut -d” ” -f1 tmp.txt &#124;sort&#124;uniq -c &#124;sort -rn&gt;count_ip.txt<br/>rm -f tmp.txt<br/>exit<br/></div><br/>最后的count_ip.txt就统计出了nginx 后LINE条记录的ip访问次数。<br/>LINE是你要统计的nginx日志最后行数<br/>DIR是你nginx的日志路径<br/>当然如果是apache日志的话可以更改下cut -d” ” -f1 参数变量。<br/><br/>Tags - <a href="http://www.dzhope.com/tags/nginx/" rel="tag">nginx</a> , <a href="http://www.dzhope.com/tags/iptables/" rel="tag">iptables</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] 利用脚本查看nginx频繁访问IP]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>