Mediawiki下特定IP攻击的解决方法
mediawiki有优秀的负载能力,但如果发生特定IP地址的连续攻击,仍能给系统带来很大的负荷,导致运行缓慢甚至宕机。对于来自特定IP地址的攻击,站长可采用以下方法进行简单应对:
1、找到index.php,在开始部分增加如下代码:
$allwiki_rip=getenv('REMOTE_ADDR'); //获取访问IP
if ($allwiki_rip=='202.97.1.74') {die();} //封禁特定IP
if ($allwiki_rip=='202.106.184.179') {die();} //封锁更多IP
$allwiki_fip=getenv('HTTP_X_FORWARDED_FOR'); //访问时间
$allwiki_que=getenv('QUERY_STRING'); //获取页面访问参数
$fp=fopen('logs.txt','a'); //以下为记录访问信息到日志文件
fputs($fp,$allwiki_fip."\t".$allwiki_rip."\t".$allwiki_que."\t".urldecode($_SERVER["HTTP_REFERER"])."\r\n");
fclose($fp);
2、建立logs.txt空文件,并设定访问权限
可以在本地建立logs.txt空文件,并上传到index.php所在目录。之后设定该文件的访问权限为777。
3、定期检查logs.txt,并进行相应处理
如果发现有可疑IP大量访问,则修改index.php中相应的IP处理代码,对其封禁
定期清空logs.txt,避免文件过大
攻击过去一段时间后(几天、一周或更长),应放开被封IP,避免挡住其他正常用户的使用
以上方法在天下维客实验通过。index.php是mediawiki各项功能的总入口,在此防范可以有效阻挡攻击。
更多说明
为安全起见,建议将logs.txt改为自定义的文件名
logs.txt文件中记录了来访IP、index.php访问参数、之前访问页面的网址。可用来进行网站流量分析
logs.txt日志内容可以复制、粘贴到excel中,排序后处理比较方便
改进考虑:
增加时间信息,以便更方便的发现攻击
自动控制文件长度?避免占用过多空间
深入改进后,应该能够实现自动统计IP访问频度、自动限制/封禁的效果,以及自动尝试解封
谢谢你啊,好帖子不顶不行
static/image/common/sigline.gif
http://img2081.poco.cn/mypoco/myphoto/20110719/00/6035253720110719001910030.png
页:
[1]