WordPress网站如何屏蔽恶意攻击和恶意采集?

国庆节第二天一起床,发现博客就被刷了40多米,再一看CPU利用时间:22分钟。瞬间觉得不对劲,流量异常。

首先怀疑是蜘蛛最近来的勤的缘故,果断去看了下百度抓取频次,由于没有实时显示,只有最近一次9月30日一天抓了60次,觉得有点高。一查,果然百度的收录页面已经到7个了,脱离了只收录首页的尴尬。想限制抓取频次又怕耽误页面收录,最后觉得可能过两天就好了。想说,一个百度应该不会用掉那么多流量,于是又去看日志,这不看不知道,一看吓一跳。

整个九月我日志只有20K行,但是国庆节刚过去一天多,日志就有10K行。于是想说,人品大爆发?所有的搜索引擎蜘蛛都来了?但是看了日志,呵呵。恶意攻击。

日志部分行如下:

67.222.18.49 – – [02/Oct/2014:00:02:44 +0800] “POST /wp-login.php HTTP/1.0″ 200 4209 “-” “-”
67.222.18.49 – – [02/Oct/2014:00:02:45 +0800] “POST /wp-login.php HTTP/1.0″ 200 4210 “-” “-”
67.222.18.49 – – [02/Oct/2014:00:02:45 +0800] “POST /wp-login.php HTTP/1.0″ 200 4210 “-” “-”
67.222.18.49 – – [02/Oct/2014:00:02:46 +0800] “POST /wp-login.php HTTP/1.0″ 200 4210 “-” “-”
67.222.18.49 – – [02/Oct/2014:00:02:47 +0800] “POST /wp-login.php HTTP/1.0″ 200 4210 “-” “-”
67.222.18.49 – – [02/Oct/2014:00:02:47 +0800] “POST /wp-login.php HTTP/1.0″ 200 4207 “-” “-”
67.222.18.49 – – [02/Oct/2014:00:02:48 +0800] “POST /wp-login.php HTTP/1.0″ 200 4207 “-” “-”
67.222.18.49 – – [02/Oct/2014:00:02:48 +0800] “POST /wp-login.php HTTP/1.0″ 200 4206 “-” “-”
67.222.18.49 – – [02/Oct/2014:00:02:49 +0800] “POST /wp-login.php HTTP/1.0″ 200 4209 “-” “-“

呵呵,空UA,高频次,同IP,明显是有人恶意攻击,想暴力破解登陆密码。想来我自己也是大意了,忘了写 robots屏蔽蜘蛛抓取登陆页面。这下肯定是因为搜索引擎抓到了我的登陆页面,然后被人恶意攻击了。

下面只能补救。

1、首先改密码,要多复杂有多复杂,尽量拖长暴力破解的时间。本次攻击从01/Oct/2014:23:03:24开始,02/Oct/2014:00:48:35结束,一共进行了10000次左右的尝试,最后密码被攻破没有不得而知,反正数据没有被改动。

2、一定要写robots屏蔽蜘蛛抓取登陆页面。不然只要搜索引擎认为网站是可以提供用户登陆和注册的,就很大几率会索引该页面,等于是赤裸裸的让每个人看到后台登陆界面。(当然,明眼人一看网站,也知道是用的什么搭的,当然也能猜到登陆页的地址)

3、屏蔽UA。 一般的正常访客是HTTP_USER_AGENT表示也是很常规的,而像DDOS一般都是同样的http信息过来的,所以屏蔽恶意HTTP_USER_AGENT在一定程度上还能防攻击。将下面的代码添加到wordpress主题文件夹的functions.php里即可屏蔽相应UA,$now_ua里面的数组就代表着目前较为常规的恶意采集软件类的HTTP_USER_AGENT标识!

//屏蔽UA
$ua = $_SERVER[‘HTTP_USER_AGENT’];
$now_ua = array(‘FeedDemon’,’ZmEu’,’Indy Library’,’oBot’,’jaunty’); //将恶意USER_AGENT存入数组
if(!$ua) { //禁止空USER_AGENT,dedecms等主流采集程序和部分sql注入工具
header(“Content-type: text/html; charset=utf-8″);
wp_die(‘请勿恶意攻击或采集本站,因为这样的站长木JJ!’);
}else{
foreach($now_ua as $value )
if(eregi($value,$ua)) {
header(“Content-type: text/html; charset=utf-8″);
wp_die(‘请勿恶意攻击或采集本站,因为这样的站长木JJ!’);
}
}

下面是一些常规的USER_AGENT信息,大家可以根据需要自己添加要屏蔽的User Agent,添加方式只需要在上面的$now_ua数据变量添加即可。
User Agent公布列表

FeedDemon 内容采集
BOT/0.1 (BOT for JCE) sql注入
CrawlDaddy sql注入
Java 内容采集
Jullo 内容采集
Feedly 内容采集
UniversalFeedParser 内容采集
ApacheBench cc攻击器
Swiftbot 爬虫
YandexBot 爬虫
AhrefsBot 爬虫
YisouSpider 爬虫
jikeSpider 爬虫
MJ12bot 爬虫
ZmEu phpmyadmin漏洞扫描
WinHttp 采集cc攻击
EasouSpider 爬虫
HttpClient tcp攻击
Microsoft URL Control 扫描
YYSpider 爬虫
jaunty wordpress爆破扫描器
oBot 爬虫
Python-urllib 内容采集
Indy Library 扫描
FlightDeckReports Bot 爬虫

4、屏蔽IP。最后如果同IP多次攻击的话,就可以把这个IP甚至IP段屏蔽掉了。虽然我个人觉得这个方法有一种一竿子打翻一船人的感觉,但是如果网站被多次同样的IP攻击,那这样做利大于弊。

5、定期备份网站。所有的方法都不能保证绝对安全,定期备份才是王道。无论因为什么原因主机被清空了,自己的损失也能降到最低。

PrintEvernoteQQFacebookTwitterGoogle+分享