美国虚拟主机Hostease

Mediawiki中文技术论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4211|回复: 0

[技术文档] Mediawiki下特定IP攻击的解决方法

[复制链接]
发表于 2010-12-29 15:18:46 | 显示全部楼层 |阅读模式
美国主机侦探
mediawiki有优秀的负载能力,但如果发生特定IP地址的连续攻击,仍能给系统带来很大的负荷,导致运行缓慢甚至宕机。

对于来自特定IP地址的攻击,站长可采用以下方法进行简单应对:

1、找到index.php,在开始部分增加如下代码:

  1. $all[url=http://www.zzbaike.com/wiki/wiki]wiki[/url]_rip=getenv('REMOTE_ADDR');         //获取访问IP
  2. if ($all[url=http://www.zzbaike.com/wiki/wiki]wiki[/url]_rip=='202.97.1.74') {die();}    //封禁特定IP
  3. if ($all[url=http://www.zzbaike.com/wiki/wiki]wiki[/url]_rip=='202.106.184.179') {die();}    //封锁更多IP
  4. $all[url=http://www.zzbaike.com/wiki/wiki]wiki[/url]_fip=getenv('HTTP_X_FORWARDED_FOR');     //访问时间
  5. $all[url=http://www.zzbaike.com/wiki/wiki]wiki[/url]_que=getenv('QUERY_STRING');        //获取页面访问参数
  6. $fp=fopen('logs.txt','a');             //以下为记录访问信息到日志文件
  7. fputs($fp,$all[url=http://www.zzbaike.com/wiki/wiki]wiki[/url]_fip."\t".$all[url=http://www.zzbaike.com/wiki/wiki]wiki[/url]_rip."\t".$all[url=http://www.zzbaike.com/wiki/wiki]wiki[/url]_que."\t".urldecode($_SERVER["HTTP_REFERER"])."\r\n");
  8. 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中,排序后处理比较方便
    * 改进考虑:
          o 增加时间信息,以便更方便的发现攻击
          o 自动控制文件长度?避免占用过多空间
          o 深入改进后,应该能够实现自动统计IP访问频度、自动限制/封禁的效果,以及自动尝试解封

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

美国主机评测网站

Archiver|手机版|小黑屋|Mediawiki中文技术论坛

GMT+8, 2024-11-24 19:51 , Processed in 0.036023 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表