WordPress 登录页面防暴力破解完整教程:Limit Login Attempts 插件配置完整指南
你的 WordPress 登录页,现在正在被试密码
如果你的网站已经上线超过一个月,打开你安装了 Limit Login Attempts Reloaded 的网站后台,点进 Logs(日志)看一眼,你大概率会看到几十甚至几百条被拦截的暴力破解记录。
这不是夸张,这是外贸 WordPress 站的日常。
如果你还不会安装 WordPress 可以参考:WordPress 完整安装教程
暴力破解的工作方式:
自动化机器人程序不停地向 yourdomain.com/wp-login.php 发送登录请求,每次试一对用户名 + 密码的组合,一秒钟可以试几十次。程序里预设了常见的弱密码字典(admin/123456、admin/password、admin/admin123……)。
由于 WordPress 默认允许无限次登录尝试,如果没有任何防护措施,这些程序理论上可以一直试下去,直到碰巧试对为止。
WordPress 默认允许无限次登录尝试,这带来了一个漏洞:密码可以通过暴力破解方式轻易破解。
一旦被破解,攻击者可以:植入恶意代码、发送垃圾邮件、删除你的内容、偷取客户数据、把你的服务器变成 DDoS 攻击的跳板。
当然了,这个漏洞有一个简单的修复方案——限制每个 IP 的登录尝试次数。
如果你想隐藏自己 WordPress 网站的默认后台,可以参考:WPS Hide Login 插件:隐藏 WordPress 后台登录地址,提升网站安全性
为什么 WordPress 不自带这个防护?
这个问题很合理。答案是:WordPress 作为一个通用平台,把安全加固的决策权交给站长,而不是强制设置默认限制(因为过于严格的默认设置可能在某些合理场景下造成误伤)。
所以,这个防护需要你主动开启。
第一步:安装 Limit Login Attempts Reloaded
Limit Login Attempts Reloaded 通过限制允许的登录尝试次数来阻止暴力攻击,保护 wp-login.php、XMLRPC、WooCommerce 登录页面以及自定义登录表单,已被超过 100 万个网站信赖使用。
安装步骤:
- WordPress 后台 → 插件 → 安装插件
- 搜索框输入:
Limit Login Attempts Reloaded - 找到作者为 WPChef.、安装量 100 万+ 的版本
- 点击立即安装 → 启用
⚠️ 搜索结果里有多个名字相似的插件(原版「Limit Login Attempts」已停止维护)。请确认安装的是带有「Reloaded」字样的版本,这才是目前仍在维护的版本。
插件下载地址:https://wordpress.org/plugins/limit-login-attempts-reloaded/
激活后在哪里找到设置?
WordPress 后台左侧菜单 → Limit Login Attempts → Settings(设置)
第二步:完整参数配置说明
进入 Settings → Limit Login Attempts → Settings(设置) 标签页,逐项配置。
大多数情况下,默认设置对网站已经够用,如果没有特别想法可以保持默认。 但了解每个参数的含义,能让你根据自己的安全需求做出更好的判断。
Local App(本地应用设置)——核心参数
这是影响实际防护效果最重要的区块。
Lockout(锁定规则)
Allowed Retries: 4 次 → 超过 4 次错误后触发锁定
Lockout Duration: 20 分钟 → 第一次锁定持续 20 分钟
Max Lockouts: 4 次 → 累计 4 次锁定后触发长期封禁
Long Lockout Duration: 24 小时 → 长期封禁持续 24 小时
Reset Retries: 12 小时 → 12 小时内无错误则重置计数
推荐参数设置(外贸站主优化版):
| 参数 | 默认值 | 推荐值 | 原因 |
|---|---|---|---|
| Allowed Retries | 4 | 3 | 对真实用户足够,对机器人更严 |
| Lockout Duration | 20 分钟 | 30 分钟 | 增加攻击成本 |
| Max Lockouts | 4 | 3 | 缩短到达长期封禁的路径 |
| Long Lockout Duration | 24 小时 | 72 小时 | 让持续攻击者付出更高代价 |
| Reset Retries | 12 小时 | 12 小时 | 保持默认即可 |

General(常规设置)
GDPR Compliance(GDPR 合规)
勾选后,登录页面会显示一行小字告知用户「继续操作即表示您理解并同意您的 IP 地址和浏览器信息可能会被安装在本网站上的安全插件处理。」,满足欧盟 GDPR 数据收集告知要求。
外贸站主要建议:如果你的站点有欧盟访客,建议勾选。
Notify on Lockout(锁定时通知)
| 选项 | 说明 | 建议 |
|---|---|---|
| Email address | 收到通知的邮箱 | 填你常用邮箱 |
| Notify after X lockouts | 触发多少次锁定后发通知 | 建议设为 3 次(过低容易频繁打扰,过高不及时) |
开启 2FA 双重身份验证功能
如果你想你的网站更安全,可以开启2FA双重身份验证 勾选 Enable 2FA
勾选后将转跳 2FA 的设置界面,可根据自己的需求自行设置。
Cloudflare 用户的特殊配置(必读!)
如果你使用了 Cloudflare、Sucuri、Nginx 等代理域名服务,它们会用自己的 IP 替换用户的真实 IP。如果服务器没有正确配置,所有用户会得到相同的 IP 地址。
这是 Cloudflare 用户最容易踩的坑:插件误把所有用户的 IP 都识别为 Cloudflare 的服务器 IP(如 103.21.244.0),导致任何一个人触发锁定,所有人都访问不了登录页。
正确配置步骤:
- 进入 Settings → Limit Login Attempts → Settings
- 找到 「本地应用」 设置
- 把默认的 「REMOTE_ADDR」 改为 「HTTP_CF_CONNECTING_IP」(这是 Cloudflare 传递真实访客 IP 的标头)
- 保存设置
⚠️ 修改前提:只有在服务器已经正确配置为信任 Cloudflare IP的情况下,改成
HTTP_CF_CONNECTING_IP才是安全的。否则恶意用户可以伪造这个标头,绕过 IP 限制。验证方式:宝塔面板 / aapanel 用户通常服务器已默认信任 Cloudflare IP。如果不确定,可以在 宝塔面板 / aaPanel 的 Nginx 配置里检查是否有
set_real_ip_from的 Cloudflare IP 段配置。
Allowlist / Blocklist(白名单 / 黑名单)
IP 白名单(Allowlist):
把你自己的常用 IP(如公司固定 IP)加入白名单,确保即使操作失误,你自己也不会被锁定。
查询自己当前 IP 的方法:访问 https://ip.me,复制显示的 IP 地址,粘贴到白名单输入框。
IP 黑名单(Blocklist):
如果日志里有某个 IP 反复攻击,可以手动加入黑名单永久封禁,不再受「尝试次数」的逻辑管控,直接拒绝访问。
第三步:查看锁定日志(监控攻击情况)
设置完成后,进入 Limit Login Attempts → Logs 查看实时拦截记录。
你可以随时访问 Limit Login Attempts → Logs 来监控锁定情况,也可以在这里手动限制特定 IP 地址或将其加入安全列表。
日志里每条记录包含:
- 被封锁的 IP 地址
- 尝试登录的用户名
- 锁定触发时间
- 剩余封锁时长
日志里常见的几种攻击模式:
| 日志显示 | 说明 |
|---|---|
| 大量不同 IP,同一用户名(如 admin) | 分布式暴力破解,尝试猜密码 |
| 同一 IP,多个不同用户名 | 用户名枚举攻击,先找出有效账号 |
| 很多 XMLRPC 来源 | 通过 XMLRPC 接口攻击(WordPress 远程调用漏洞) |
| 锁定后立刻换 IP 继续 | 使用代理池的专业攻击者 |
看到第四种情况(不断换 IP 的攻击),仅靠 Limit Login Attempts 不够,需要配合 WAF 层面的拦截,见本文最后的「4 层完整安全体系」。
自己被锁定了怎么办?
这是每个人都该提前知道的情况——如果你自己输错了密码,或者 IP 设置有问题,你自己也可能被锁在门外。
方法一:等待锁定期结束
最简单的方法,等设置的锁定时长过去(你设的 30 分钟、24 小时或 72 小时)后自然解锁。
方法二:用不同的 IP 登录
用手机流量(不是 Wi-Fi)登录,或者开手机热点,换一个 IP 地址访问你的后台,可以绕过当前 IP 的封锁。
方法三:通过 FTP / aaPanel 文件管理器手动解锁
如果实在无法等待:
- 打开 aaPanel 文件管理器(或 FTP 工具)
- 导航到
wp-content/plugins/目录 - 把
limit-login-attempts-reloaded这个文件夹重命名为别的(如limit-login-attempts-reloaded-disabled)相当于禁用插件。 - 回到浏览器正常登录 WordPress 后台
- 登录成功后,把文件夹名改回来,重新激活插件
- 把自己的 IP 加入白名单,以后就不会再有这个问题
方法四:通过 phpMyAdmin 清除锁定记录
aaPanel → phpMyAdmin → 选择 WordPress 数据库 → 执行 SQL:
sql
DELETE FROM wp_options WHERE option_name LIKE '%limit_login%';
执行后刷新,锁定记录被清除,可以重新登录。
只靠这一个插件够吗?4 层登录安全体系
Limit Login Attempts Reloaded 是很好的第一道防线,但不是全部。
真正的 WordPress 登录安全应该是 4 层叠加:
第一层:限制登录尝试次数(Limit Login Attempts Reloaded)
✅ 已完成。这是基础层,拦截大多数普通暴力破解。
局限: 对使用大型代理 IP 池轮换攻击的专业攻击者效果有限,因为每个 IP 用完限制就换一个新的。
第二层:强密码 + 双因素认证(2FA)
开启两步验证(2FA)在登录时增加一道额外的验证屏障,通常通过手机设备发送验证码。即使密码被泄露,攻击者也需要用户的设备才能登录。
或者用插件:WP 2FA
可参参考教程:WordPress 双重身份验证 WP 2FA 插件安装与配置教程
配置 2FA 后,即使攻击者猜对了密码,没有你手机上的 Google Authenticator 验证码,也登录不了。密码 + 2FA 的双重保护,把暴力破解的成功概率降到接近零。
第三层:禁用 XMLRPC(关闭攻击入口)
XMLRPC 是 WordPress 的远程调用接口,主要被手机 APP 和第三方客户端使用。很多攻击者专门针对 XMLRPC 发动攻击,因为它可以绕过某些前端防护直接与 WordPress 核心通信。
Limit Login Attempts Reloaded 在通过 XMLRPC 的登录限制达到后,会返回 403 Forbidden 响应头。
但更彻底的做法是:如果你不需要通过手机 APP 管理 WordPress,直接禁用 XMLRPC。
在 Wordfence → All Options → Brute Force Protection 中,勾选「Disable XML-RPC Authentication」。
或者在 functions.php 子主题文件中加入:
php
add_filter( 'xmlrpc_enabled', '__return_false' );
第四层:WAF 拦截(网络层过滤)
对于不断换 IP 的高级暴力攻击,最有效的解决方案是 WAF(Web 应用防火墙)——在请求到达 WordPress 之前,在 CDN/代理层面直接过滤掉恶意流量。
免费方案:Cloudflare WAF 基础版
- Cloudflare Security → WAF 开启,启用 Managed Rules
- Security → Settings 里开启 Bot Fight Mode(注意 WP Rocket 用户需要排除规则,可参考:WP Rocket 移除未使用 CSS 修复)
专属方案:WPHOS Edge™ WAF 针对 WordPress 外贸站专门优化的 WAF 规则,在 CDN 节点层面拦截暴力破解请求,这些恶意请求根本不会到达你的服务器,Limit Login Attempts 甚至不需要出手。
完整配置速查(一次性检查)
安装插件后对照这张表,确保所有配置都已完成:
Limit Login Attempts Reloaded:
- 插件已安装启用,版本为最新
- Allowed Retries:3 次
- Lockout Duration:30 分钟
- Max Lockouts:3 次
- Long Lockout Duration:72 小时
- GDPR Compliance:✅ 已勾选(外贸站)
- 锁定通知邮箱:填入常用邮箱
- 自己的 IP 已加入白名单
- 用了 Cloudflare → IP 来源改为 HTTP_CF_CONNECTING_IP
配套安全设置:
- 管理员账号不使用「admin」用户名
- 管理员密码 16 位以上,含大小写+数字+特殊符号
- 安装 WP 2FA,给管理员开启双因素认证
- 不使用手机 APP 管理 WordPress → 禁用 XMLRPC
- 接入 Cloudflare 或 WPHOS Edge™ WAF
常见问题
我已经装了 Wordfence,还需要 Limit Login Attempts Reloaded 吗?
不需要同时装两个。Wordfence Security 免费版本身包含暴力破解保护(Brute Force Protection)和登录次数限制功能,如果你已经装了 Wordfence 并启用了这些功能,Limit Login Attempts Reloaded 就是重复功能,反而增加了一点额外服务器资源开销。选一个就够了:Wordfence 功能更全面,Limit Login Attempts Reloaded 更轻量专注。
Limit Login Attempts Reloaded 的免费版和付费版(Premium)有什么区别?
付费版(Premium / Micro Cloud)提供云端 IP 智能分析,可以在云端直接中和恶意登录尝试,网站性能不受影响
如果攻击者一直换 IP,这个插件还有用吗?
有限有用。每换一个新 IP 又从零开始计数,Limit Login Attempts 对这类攻击的防护效果大打折扣。针对这类高级攻击,真正有效的是 WAF 层面的拦截( WPHOS Edge™),结合 2FA(即使攻击者猜对密码也进不来)。
这个插件会影响网站速度吗?
几乎不影响。插件只在用户尝试登录时执行逻辑,前端访客浏览页面时完全不触发插件代码,对 PageSpeed 分数没有任何影响。