apache中的异常访问,通常指的是频繁、大量访问的用户,通过apache的log,结合linux下的几个命令,可以分析这些用户,并通过apache的配置文件来禁止他们访问。
首先,更改apache的log方式,不记录一些图像、css等文件,这样在log中每一行基本上都能对应一次访问,如果不去除图像等文件的记录,正常用户访问一个页面,同时也会下载页面上的图像、css等文件,会产生多条log记录,影响计数的结果。在apache的conf文件中增加如下配置:
复制代码代码如下:
SetEnvIfNoCase Request_URI .css$ useless-file
SetEnvIfNoCase Request_URI .gif$ useless-file SetEnvIfNoCase Request_URI .ico$ useless-file SetEnvIfNoCase Request_URI .jpg$ useless-file SetEnvIfNoCase Request_URI .js$ useless-file CustomLog logs/hebgc.com/access.log combined env=!useless-file 这样就可以了,关于SetEnvIf的其他用法,可以参见Apache文档中SetEnvIf和Environment Variables in Apache部分。
接下来,经过一段时间的运行,我们就可以分析log文件中访问量最大的用户了,只需要一条命令:
第一个sort,是把分拣出来的ip地址排序,这样相同的ip地址会排在一起
复制代码代码如下:
<Directory />
Order Deny,Allow Deny from 219.143.69.2 Deny from 218.12.26.233 Deny from 61.135.162.51 Allow from all </Directory>
如此反复监测、设置,直到没有人捣乱为止。
复制代码代码如下:
grep "GET /url/to/some/file" access.log |awk '{print $1}' |sort |uniq -c |sort -n
(责任编辑:IT) |