wordpress 防CC攻击 [附代码与黑名单]

10月8号,碎碎念实在受不鸟米国卡比主机的速度,在接收到超多朋友投诉网站开启速度慢之后,哥毅然上网寻求新主机。当鸡立断买下了香港300M配置10G流量的主机,价格超低,优惠码使用后只需要36元,36啊!你知道我原来主机多少不?一年100啊!为老哥抱不平啊,奸商卖了这么个主机给老哥,真是不良啊!

新主机使用不到一周就遭遇了CC攻击!主机遭受攻击后如何防范,碎碎念怎么跟无良攻击者斗争!无良IP有几多?网站为何停机数天?[欲知后事如何,且看后文分解o(╯□╰)o]

一、遭遇攻击惊险一幕

【10-16】——主机遭遇攻击,流量猛增

上回讲到了更换掉脑抽主机的段子,现在来聊聊无良的CC/DDos残忍迫害下的碎碎念网站吧,%>_<%

入驻激爽枫叶主机后,小伙伴们普遍反应XXOO的速度超神了!隔壁大妈都惊呆了!心里那个暗爽啊!超低价格,买了个超爽主机。

兴奋持续没两天,第二天,碎碎念遭遇了一桩奇事!

我们来看一列表单:
流量消耗表

尼玛,跟技术说了下,一查,对方用的是美国ip明显就是用VPS之类的刷我流量的,我勒个去,我招谁惹谁了?

仅仅是10月9日一天,就刷掉我800多M,居心何在啊?我只是个小小的站长,和谐又低调,你说你何必来烦我呢?

点名批评61.135.190和220.181.165这两段明显就是代理主机下攻击我,丫的,哥果断把你们屏蔽了。文末附黑名单,大家在评论审核把这些垃圾IP封杀了吧!

后来,在主机根目录下.haccess文件中,添加了这几行代码来屏蔽ip:

Order Allow,Deny
Deny from 61.135.190
Deny from 220.181.165
Deny from 110.76.40.170
Deny from 42.121.52.2
Deny from 19.234.1.5
Deny from 183.60.244.33
Deny from 183.60.243.233
Allow from all

我不明白这些人为什么要频繁攻击我数天,一次两次就算了,天天攻击,我估计这些人要么吃饱了没事干闲着蛋疼,要么就是脑子被门缝夹了治不好郁闷!

一个上海的和一个杭州的,这两个叼毛居然用真实IP来攻击,等你们来啊,再来,我直接报网警,让你们爽去!

主机.haccess文件加屏蔽还是不够,CC/DD攻击可以换着IP来攻击的,所以,屏蔽到的,只能说是很明显来捣乱的几个特定IP,那些用肉鸡刷或者随机IP刷的,真的拿他们没办法了吗?

二、寻找博客防御之道

我想到了一个idea,通过验证访客的来访地址是否为代理地址,把通过代理地址访问的统统屏蔽掉!这样就可以99%地拦截掉那些用代理服务器发起攻击的脑残了!于是我上网找代码(不会编写代码的硬伤啊!)

看到了90博客写的这一篇《wordpress防CC攻击代码》的文章,通过验证是否频繁刷新,如果频繁刷新,则退出当前页面并提示请勿频繁刷新,等待2秒后继续访问。

心里很兴奋就复制了下来,新建一个fuckCC.php,厚着脸皮把代码放进去,在header调用,一刷新,尼玛!怎么出错了????
后来一检查,没看出端倪(后续session指令说明解决问题),这,叫我智商捉急呀!肿么办?再找找吧!

呀!一篇令我艳羡的文章,核攻击大哥写的《ASP防御CC攻击模块》这一个模块就很丰富了,asp主机福音啊!

1、连续10次访问频率低于1秒的,判定为攻击,封禁IP,这个时间和次数可以自定义,规则放的比较宽,误判几率极低。
2、封禁时间按照攻击频率计算,攻击频率越高,封的越久,如果你在封禁时间段内仍旧访问,那么封禁时间会累积增加。
3、移除掉15分钟内没有访问的用户(时间可自定义)。

思路比较完美了,即使你被误封,过个10分钟后又可以正常访问了。误封率还是很低的,安全,强大,资源消耗低。

可惜呀,咱是PHP 的,用不了啊,不过,思路还是可以学习下的撒!

又去度娘走了一遍,发现90博客还有一篇《wordpress防CC攻击代码》,这段代码比较简洁,而且误封率也是超低,最重要的是,适用于wordpress等PHP主机环境!欣喜若狂啊!立马copy下来本地测试啊!

我采用的是新建一个php文件,然后在header调用。这样做的好处有两个:一个是修改功能代码方便,不用每次都打开header文件,也不怕误改了其他地方的代码,二是一旦出错,可以快速修改并检查,甚至可以直接删除文件。(当然,其实本地test没有那么麻烦滴)

三、指令意外失效,原来是格式出错

狂按F5测试,尼玛!没反应?再试一次,嘿,有反应了!擦~怎么是这样?首页显示这行鸟字:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ......)...

这。。。抓紧度娘啊!
狂补了下课程,总算知道了原来是session这个会话指令的问题。
在启用session指令前,不能输出任何内容,哪怕是一个空格,都会报错!调用函数必须放置在header.php文件的最顶行,也就是:

<?php include('includes/forbiddenCC.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

必须调用在所有页面的最前面,和前面第一次提到的fuckCC文件调用后失败的问题如出一辙,按此法调用,问题引刃而解!

期间用tk备用域名测试了下,果然可以拦截掉一些低级的CC,比如用网站测速、测压工具来测试,都会提示出现死循环,为什么?自己参悟去吧!说多了,又怕有心人滥用,嘿嘿。

四、防御初步建成、黑名单惨遭曝光

这个博客主题自带防CC攻防设置到此告一段落。看官也累了吧,碎碎念也累啊,这一个过程写起来一个钟不到,探索却用了差不多一个星期的时间,网站也因此进入维护阶段一周,期间72个无良提交的垃圾链接(我已经记住您的网址了,如果再犯,必定让你后悔!)和70条无良的垃圾评论,真心吐血啊!一个是调试问题,一个是不懂代码要学习代码,看懂了才能用啊,你说是不!否则,机械复制,连修改参数都不会,拿来主义,能行吗?会进步么?

(⊙o⊙)…END ——forbidden部分结束了,后面就附上大黑阔们的Ip 吧,大家伙尽情地封杀吧!

请在本站搜索:《屏蔽它们,让博客更安全》

另外,大家慎用什么日志宝、安全宝之类的,根据后台数据显示,日志宝的爬取数据也是造成我博客流量大面积流失的重要原因。有图为证,但,隐私问题,这里就不贴出来了。建议,新主题修改后和上线前,先用免费域名+免费主机搭建的站点测试一下吧,免得像碎碎念一样,无意中爆出了14个漏洞,遭遇这么折腾的被攻击事件!

(小标签:赞一下枫叶主机的技术客服,帮我检测了主机,指导我修改.haccess文件,真心是个负责任的客服。)

五、forbidden CC 源码

之所以在这里更新并添加这段代码,是为了将来方便查找,也能让看这篇文章的哥们可以最快地解决防御大事。
再次感谢90博客以及代码原作者,他们为广大被垃圾攻击所困扰的童鞋解决的最方便和最有效的解决方案,掌声鼓励~~
源码如下,果断加入提早防范:

<?php
// Come form www.90blog.org
session_start(); //开启session
$timestamp = time();
$ll_nowtime = $timestamp ;
//判断session是否存在 如果存在从session取值,如果不存在进行初始化赋值
if ($_SESSION){
$ll_lasttime = $_SESSION['ll_lasttime'];
$ll_times = $_SESSION['ll_times'] + 1;
$_SESSION['ll_times'] = $ll_times;
}else{
$ll_lasttime = $ll_nowtime;
$ll_times = 1;
$_SESSION['ll_times'] = $ll_times;
$_SESSION['ll_lasttime'] = $ll_lasttime;
}
//现在时间-开始登录时间 来进行判断 如果登录频繁 跳转 否则对session进行赋值
if(($ll_nowtime - $ll_lasttime) < 3){
if ($ll_times>=5){
header("location:http://127.0.0.1");
exit;
}
}else{
$ll_times = 0;
$_SESSION['ll_lasttime'] = $ll_nowtime;
$_SESSION['ll_times'] = $ll_times;
}
?>
NOOLDEY

本文作者:NOOLDEY

做一个诗情画意的码农,皮皮猪,我们走!

原文链接: http://zhuweisheng.com.cn/wordpress/forbidden/

本站文章如无特殊声明均为原创,创作不易,转载请注明来源,谢谢!