搜索全站
安全防护 8 分钟阅读

WordPress 后台被暴力破解登录怎么加固防护(含封 IP)

服务器日志里 wp-login.php 被高频 POST、后台收到一堆登录失败提醒?这说明你的站正在被暴力破解。本文教你限制登录尝试次数、自动封禁恶意 IP、开启两步验证并修改登录地址,从应用层到服务器层多层加固,把 WordPress 后台稳稳守住,避免账号被攻破。

U
UFO_PF 2026-10-10 · 阅读 8 分钟
Wo 安全防护
阅读提示
本文约 2,915 字,预计阅读 8 分钟。文中命令与配置均经过实测,可直接参考执行。

引言

某天你打开邮箱,发现 WordPress 或安全插件发来几十封「登录失败」提醒,服务器访问日志里满屏都是同一个或几个 IP 在疯狂 POST wp-login.php,这就是后台正在被暴力破解。攻击者不靠漏洞,而是用脚本拿常见用户名(admin、你的邮箱)配上成千上万个弱密码逐一尝试,只要命中一个就拿到后台,进而上传木马、插入广告、篡改首页。很多站长觉得「密码我设复杂点就行了」,但单纯靠密码强度并不够:只要登录接口敞开、没有尝试次数限制,脚本可以 7×24 小时不停地试。本文从攻击原理讲到可落地的加固组合拳,包括限制登录次数、封 IP、改登录地址和两步验证,让你的后台从「谁都能敲」变成「几乎无法爆破」。

故障原因分析

  1. 默认用户名 + 弱密码。攻击者最爱试 admin、administrator 这类默认账号,再配上 123456、admin888、网站域名+年份 这类常见口令,命中率并不低。
  1. 登录接口地址固定且公开。wp-login.php 是 WordPress 雷打不动的登录入口,任何扫描器都知道往这里打,等于把门牌号写在门口。
  1. 没有失败次数限制。默认情况下 WordPress 允许无限次尝试,脚本每秒可以提交几十次请求,理论上总能试出来。
  1. XML-RPC 被当成放大器。xmlrpc.php 的 system.multicall 方法可以在一次请求里打包几百次登录尝试,绕过普通的“每 IP 每分钟一次”的限速。
  1. 缺乏 IP 层拦截。没有防火墙、没有 fail2ban、没有 CDN 时,攻击流量直接怼到 PHP,服务器一边被刷一边扛负载,CPU 飙高甚至拖垮站点。

分步解决方案

方法一:先把账号和密码这道基础关做扎实

不要使用 admin 这类默认用户名,改成与站点无关的别名;密码用 16 位以上、大小写字母加数字加符号的随机串,并用密码管理器保存。这一步看似老生常谈,却能挡掉绝大多数「字典式」爆破,是后面所有加固的前提。

方法二:用插件限制登录尝试次数

安装 Limit Login Attempts Reloaded(免费、轻量):设置同一 IP 连续失败 4 次锁定 20 分钟,锁定次数递增。或使用 Wordfence 的「Login Security」,可以按 IP 统计失败次数并自动封禁。两款插件都真实存在,选一个即可,不要叠加多个同类插件以免互相打架。

方法三:开启两步验证(2FA)

即便密码泄露,两步验证也能再挡一层。推荐插件:Wordfence 内置 2FA,或 Google Authenticator 类插件(如 Two Factor Authentication)。开启后登录需要额外输入手机 App 里的 6 位动态码,攻击者拿到密码也进不来。

方法四:用 .htaccess 给 wp-login.php 加 IP 白名单

只允许你自己的固定 IP 访问登录页,其余一律拒绝。在网站根目录 .htaccess 中加入:

<Files wp-login.php>
    Order Deny,Allow
    Deny from all
    Allow from 1.2.3.4
    Allow from 5.6.7.8
</Files>

把 1.2.3.4、5.6.7.8 换成你自己的出口 IP。注意:如果家里是动态 IP,此方法会把自己也挡在外面,建议先用固定 IP(公司、云主机跳板)再启用。

方法五:用 fail2ban 在服务器层自动封 IP

如果你用的是 VPS,fail2ban 能读取日志并自动把恶意 IP 拉黑。以宝塔环境为例,创建 /etc/fail2ban/jail.d/wordpress.conf:

[wordpress]
enabled  = true
filter   = wordpress
logpath  = /www/wwwlogs/yoursite.com.log
maxretry = 5
findtime = 600
bantime  = 86400

再在 /etc/fail2ban/filter.d/wordpress.conf 里定义匹配 wp-login.php 失败请求的规则,然后 systemctl restart fail2ban 生效。被封 IP 默认禁 1 天。

方法六:改掉默认登录地址 + 关闭 XML-RPC

用 WPS Hide Login 或「隐藏登录」类插件,把登录地址从 wp-login.php 改成自定义路径(例如 /my-secret-gate),脚本再扫默认地址就直接 404。同时在主题 functions.php 里关闭 XML-RPC:

// 关闭 XML-RPC,防止 system.multicall 放大爆破
add_filter( 'xmlrpc_enabled', '__return_false' );

具体关闭方式可参考站内《关闭 XML-RPC 防止被滥用攻击》一文。

方法七:用 CDN/WAF 挡在最前面

把域名接入 Cloudflare 或宝塔 WAF,开启「托管规则」和「速率限制」,把 wp-login.php 的请求频率限制在合理范围。流量在到达服务器之前就被过滤,PHP 层压力骤减,服务器也安全得多。

常见踩坑点

  1. 只改密码不封 IP。密码再强,攻击流量照样把服务器 CPU 打满,限速和封禁必须一起做。
  1. IP 白名单把自己锁在门外。用动态 IP 时套用 .htaccess 白名单,回家一登录就发现进不去,记得先确认自己的 IP 是否固定。
  1. 多个限速插件同时装。Limit Login Attempts、Wordfence、iThemes Security 一起上会互相干扰,甚至正常登录也被判为攻击,留一个主力即可。
  1. 改了登录地址却忘了改书签和客户端。改完后旧地址 404,部分站长以为站点坏了,其实登录入口已经搬家。
  1. fail2ban 没配日志路径。日志路径写错或站点日志没开,fail2ban 抓不到记录,等于装了不生效,记得 fail2ban-client status wordpress 验证。
  1. 忽略 XML-RPC 这条捷径。只封 wp-login.php 却留着 xmlrpc.php,攻击者照样能通过它爆破,两个口子都要堵。

总结

WordPress 后台被暴力破解,说到底是「固定的门 + 无限的尝试」给了脚本可乘之机。加固的核心思路是三层叠加:账号密码层面用强密码和两步验证,应用层面用 Limit Login Attempts Reloaded 或 Wordfence 限制次数并修改登录地址、关闭 XML-RPC,服务器层面用 fail2ban 或 Cloudflare 自动封脏 IP。任何单一手段都不完美,但组合起来足以让脚本无功而返。把这套 WordPress 暴力破解防护做完,再定期看两眼登录日志,后台就基本能高枕无忧了。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。