WordPress是一款非常流行的博客开源工具,其自带的搜索功能使用方便,但也经常会被恶意攻击利用。

WordPress恶意搜索攻击是指利用 WordPress 的固定搜索结构 域名/?s=搜索词(例如:https://blog.mimvp.com/?s=米扑博客),其将导致:

  1. 网站较短时间内频繁多次请求,会极大增加服务器的搜索负担,耗费CPU、内存、磁盘、带宽等宝贵资源。
  2. 更严重可能会顺便将访问的地址推送到各大搜索引擎,加快这些恶意网址的收录。这样,你的网站就会沦为这些不法之徒传播不良信息的渠道,这对你的网站排名非常不利,甚至可能会被搜索引擎拒绝收录。

简单说这属于搜索留痕的一种黑帽SEO手段,它利用WordPress 站内自带的搜索可以来优化某些长尾关键词以达到推广的目的

 

如何防御这类WordPress恶意搜索攻击呢?

1、禁止搜索引擎收录搜索结果页地址

禁止收录搜索结果页,我们可以在网站根目录下的 robots.txt 文件中,添加以下规则:

vim /usr/local/httpd/htdocs/wordpress/robots.txt

Disallow: /?s=*

请自查你的WordPress博客目录下的 robots.txt 文件中是否含有,如果有请跳过这一步

 

2、安装插件限制IP一定时间内搜索次数(推荐)

使用插件 Search Limiter & Blocker ,可设置 WordPress 网站自带搜索在一定时间内限制同一IP的搜索次数。

在WordPress插件里搜索和安装Search Limiter & Blocker插件即可,它能限制 WordPress 网站用户搜索次数和搜索频率。设置非常简单,如下图所示,有三个输入框,分别设置:限制访问者的搜索次数、搜索时间间隔、禁止搜索后的提示。

使用上面的插件会限制搜索次数和频率,当访问量大时可在一定程度起到减小服务器压力的作用。

 

3、Apache设置屏蔽IP地址和URL网址来禁止访问

iptables -A INPUT -s 61.135.221.253 -j DROP    // 拒绝某个ip访问

修改httpd.conf文件,在影响的主机设置中添加这样的代码,然后重启Apache服务

# 禁止IP访问
Order Deny,Allow
Deny from 125.115.2.85
Deny from 91.228.196.234

# 禁止域名路径访问
RewriteCond %{HTTP_HOST}  ^can\.bizdirlib\.com(.*)$
RewriteCond %{REQUEST_URI} ^\/business_directory\/S\_\%26\_J(.*)$
RewriteRule .* - [F,L]

  

4、使用第三方站内搜索替代WordPress 自带的搜索功能

这种方法可以说是无奈之举,提供第三方自带的搜索功能有多家:

百度站内搜索(好像已关闭入口了)、搜狗站内搜索、360站内搜索等等,但第三方搜索比较尴尬的点就在于搜索只提供在对应搜索引擎已收录的内容,当网站在该搜索引擎没收录时,就啥也搜不到…

 

5、针对搜索功能增加人机安全验证

这个验证就类似谷歌机器人验证一样,辨别是正常访客还是机器人访客,若是正常访客,WordPress搜索安全验证过后则可以畅通无阻,正常使用;若是恶意机器人,防火墙就会自动拦截,不再对服务器资源进行消耗。

实现逻辑就是在防火墙层次进行逻辑匹配,只要包含 /?s= 则执行人机安全验证,验证通过则为正常访问,验证不通过则直接拦截。

而且这还可根据你的需求进行调整,比如第一次搜索放行,第二次进行验证,验证不通过则进行阻断、封禁IP。

 

小结

WordPress搜索被恶意攻击应该是大多数站长都会遇到的问题,会增加网站服务器压力,也影响网站在搜索引擎的权重,推荐使用第二种插件方法,简单实用。

 

 

参考推荐:

WordPress 网站被利用自带搜索恶意攻击怎么办

Apache中设置屏蔽IP地址和URL网址来禁止采集

Apache 禁止 https 访问整个网站,但仅对一个 url 启用它

Linux 防火墙 iptables 和 firewalld

CentOS 7 安装 iptables 防火墙

10个常用iptables配置实例

iptables 详细介绍及配置

iptables日志探秘

Linux iptables防火墙与DDOS攻防实战