Discuz开启防CC攻击的简单方法
在DZ的“config_global_default.php”文件中就有对防CC攻击的描述说明注意:此文件仅是说明文件,开启防攻击的文件并非此文件,详细方法请往下看。
打开config_global_default.php查找
“$_config['security']['attackevasive'] = 0;” // CC 攻击防御 1|2|4|8
// 0=关闭, 1=cookie 刷新限制, 2=限制代理访问, 4=二次请求, 8= 回答问题(第一次访问时需要回答问题)
DZ2.0测试过,但SLB不能开启2,否则会提示访问限制。
可以设置的值有:
0表示关闭此功能
1表示cookie刷新限制
2表示限制代理访问
4表示二次请求
8表示回答问题(第一次访问时需要回答问题)
同时也可以设置为组合的方式,如1|2表示同时启用cookie刷新限制和限制代理访问。
不影响搜索引擎蜘蛛的抓取的修改方法,需要修改下面文件:
在source/include/misc/misc_security.php文件中可以找到如下代码(默认第46~50行)
if($attackevasive & 4) {
if(empty($lastrequest) || TIMESTAMP - $lastrequest > 300) {
securitymessage('attackevasive_4_subject', 'attackevasive_4_message');
}
}修改为:
if($attackevasive & 4) {
if(empty($lastrequest) || TIMESTAMP - $lastrequest > 300) {
$kw_spiders = 'Bot|Crawl|Spider';
// keywords regular expression of search engine spiders
if(preg_match("/($kw_spiders)/i", $_SERVER['HTTP_USER_AGENT'])) {
// match search engine spiders
}else{
securitymessage('attackevasive_4_subject', 'attackevasive_4_message');
}
}
一、CC攻击的原理分析:
攻击者控制某些主机不停地发大量数据包给对方器造成器资源耗尽,一直到宕机崩溃。攻击者利用 CC 的这个特点模拟 N 个用户并发连接,而这些连接都是真实、分散的,CC 攻击的请求全都是有效的请求,无法拒绝的请求,不易被察觉,那么后果就是站点的页面访问速度集聚下降,用户访问的时候变的非常非常慢。所以当我们的站点变的比以往慢很多倍的时候就有可能是被 CC 攻击了。
二、Discuz!X2防CC攻击原理分析:
1代表cookie 刷新限制:
当同一个 cookie 请求大于或等于 1 秒时刷新,将被限制访问。
2代表限制代理访问:
大家应该都理解什么是代理访问吧?这里就不详细解释了,相信很多站长朋友对代理访问比较熟悉。
利用代理访问是比较常用的一种攻击手段,因为代理可以有效地隐藏自己的身份,也可以绕开所有的防火墙,因为基本上所有的防火墙都会检测并发的TCP/IP连接数目,超过一定数目一定频率就会被认为是Connection-Flood。
使用代理攻击还能很好的保持连接,我们这里发送了数据,代理帮我们转发给对方服务器,我们就可以马上断开,代理还会继续保持着和对方连接(有人利用2000个代理就能产生 35 万并发连接)。
所以限制代理访问可以有效防御CC攻击。
4代表二次请求:
开启了二次请求机制,先显示等待 2 秒重新加载然后才会跳转出真实的帖子
8代表回答问题:
当第一次访问时需要回答问题,答案正确后才可以看到页面的具体内容。
了解了这些数字参数的涵义,我们设置起来就容易的多了,比如我设置成 1|2|4 就代表限制cookie刷新+限制代理访问+开启二次请求。
三、详细设置教程:
通过上面的概念性了解,实际的操作开始了,必须要在站点的配置文件中设置正确合理后,才可有效防御CC攻击。
找到站点程序的 config 文件夹,打开 config_global.php 文件,找到:
$_config['security']['attackevasive'] = '0';
进行修改即可,0为关闭防御,打开防御可以把0修改为组合的形式,组合为: 1|2, 1|4, 2|8, 1|2|4…等。建议大家使用以下方案:
$_config['security']['attackevasive'] = 1|2|4;
此方案可以通过延缓访问的方式,减轻访问量较大的站点的服务器压力。
某某网站卫士来预防攻击
从界面上看,似乎是防止了大量的CC攻击,但登录网站后发现,流量依旧异常,攻击还是依旧,看起来这个网站卫士的效果并没有达到。从原理上看,基本上所有的防火墙都会检测并发的TCP/IP连接数目,超过一定数目一定频率就会被认为是Connection-Flood。但如果IP的数量足够大,使得单个IP的连接数较少,那么防火墙未必能阻止CC攻击。
不仅如此,我还发现,启用了某某网站卫士之后,反而更容易被CC攻击,因为这个网站卫士并不能过滤掉CC攻击,攻击的IP经过其加速后,更换成为这个网站卫士的IP,在网站服务器端显示的IP都是相同的,导致服务器端无法过滤这些IP。
实际上,不使用网站卫士类的服务,直接通过分析网站日志,还是很容易分辨出哪个IP是CC攻击的,因为CC攻击毕竟是通过程序来抓取网页,与普通浏览者的特性区别还是很大的,例如普通浏览者访问一个网页,必定会连续抓取网页的HTML文件、CSS文件、JS文件和图片等一系列相关文件,而CC攻击者仅仅只会抓取一个URL地址的文件,不会抓取其他类型的文件,其User Agent也大部分和普通浏览者不同,这就可以在服务器上很容易分辨出哪些访问者是CC攻击了,既然可以判断出攻击者的IP,那么预防措施就很简单,只需要批量将这些IP屏蔽,即可达到防范CC攻击的目的。
修改完成后覆盖,更新缓存即可。修改前切记做好文件备份
禁止ping 这个也是一种攻击方式
页:
[1]