使用CloudFlare安全规则拦截WordPress非法请求教程

相信使用WordPress搭建网站的用户,尤其是自己购买VPS然后安装宝塔面板搭建WordPress的用户,肯定会碰到过CPU使用率一不小心就100%的情况,然后整个服务器就比较卡,网站打不开,这个时候如果你分析网站日志,可能就会包含大量可疑的访问记录。例如下图:

宝塔网站访问日志

从上图日志我们可以看到,这个IP为172.70.222.233的用户(机器人),在0点31分的时间,发起了很多次对网站不存在php文件的请求。

同一时间发起这么多请求,像我们普通用户购买的VPS性能完全扛不住,所以CPU会瞬间飙升到100%,网站就打不开了。

这种扫描行为的危害是什么?

  1. 消耗服务器资源:每一个请求都会占用服务器的CPU和I/O资源。海量的扫描请求会无端消耗本应用于服务真实用户的带宽和计算能力,可能导致网站响应变慢,甚至宕机。
  2. 探测漏洞:攻击者通过尝试访问常见的脚本文件路径,来探测您的网站是否存在已知的安全漏洞,一旦发现可利用的文件,便会发起进一步攻击。
  3. 产生垃圾日志:大量的404错误日志会淹没正常的访问记录,给日志分析和故障排查带来困难。

如何拦截?解决思路

为了解决这个问题,如果你正好使用了Cloudflare的CDN服务,那么我们可以通CloudFlare的自定义安全规则,高效拦截这些非法请求,保护服务器资源,提升网站安全性与访问速度。

Cloudflare的“自定义规则”功能允许我们设置复杂的条件来判断一个请求是否恶意。当请求触发规则时,Cloudflare会直接返回一个拦截页面,而该请求永远不会到达您的服务器,从而从根本上解决了资源消耗问题。

如下图:

Cloudflare拦截提示界面

实战教程,创建自定义安全规则

下面,我们一步步来创建这条“防火墙”规则。

步骤1:进入自定义规则设置页面

  1. 登录您的Cloudflare仪表板,选择需要保护的网站。
  2. 在左侧导航栏中,依次进入 安全性> 安全规则
  3. 在顶部选项卡中,选择 自定义规则
  4. 点击 创建规则> 自定义规则,进入规则编辑界面。

步骤2:配置规则条件与操作

现在您会看到一个类似下图的界面(截图是已经添加了规则的样子):

Cloudflare规则创建界面

规则名称:填写一个清晰易懂的名称,例如“拦截不存在的PHP文件访问”。

规则配置:这是我们规则的核心。你可以按照截图的样子手动输入,也可以直接点击“编辑表达式”然后复制粘贴下面的命令到编辑框里面。

Code
(http.request.uri.path contains ".php" and not http.request.uri.path contains "/wp-admin/" and not http.request.uri.path contains "/wp-includes/" and not http.request.uri.path contains "/wp-content/" and not http.request.uri.path contains "/index.php" and not http.request.uri.path contains "/wp-login.php" and not http.request.uri.path contains "/wp-cron.php" and not http.request.uri.path contains "/xmlrpc.php")

这个规则的意思是:

  • http.request.uri.path contains ".php":匹配所有请求路径中包含 .php的请求。
  • not http.request.uri.path contains "/wp-admin/"等:排除掉WordPress正常运行所必需的合法PHP文件和目录路径。这是关键的一步,确保不会误伤正常访问。
    • /wp-admin/:WordPress后台管理目录。
    • /wp-includes/:WordPress核心函数库目录。
    • /wp-content/:主题、插件和上传文件目录。
    • /index.php/wp-login.php/wp-cron.php/xmlrpc.php:WordPress核心文件。

简单来说,这条规则的意思是:“拦截所有访问PHP文件的请求,但WordPress系统本身需要使用的合法PHP文件除外。”

然后采取措施…选择“阻止”,最后点击部署按钮。

效果验证

配置完毕安全规则后,你可以用浏览器打开你网站,多点击一些页面,确保所有页面都能正常打开。

然后访问你网站不存在的php页面(网址后面随便加上一些字母数字,以.php结尾),会出现Cloudflare的拦截页面。

总结:

这样部署之后,减轻了服务器的压力,不正常的php请求都不会传递到服务器,哪怕一天几百上千个IP在扫描你服务器上不存在的php文件,也不会导致服务器崩溃。关键的是,这样操作是免费的,不需要额外花钱,便宜又好用,又被你赚到了。

5/5 - (1 vote)

需要专业的技术解决方案?

我们的专业团队可以帮助您实现技术目标,提供从设计到开发的全方位服务。

咨询专业服务
🔒

评论已关闭

本文的评论功能已关闭,如有问题欢迎通过其他方式联系我们。

×
二维码

扫码关注