保护 WordPress 登录和 wp-admin 免受黑客攻击

WordPress 登录页面(/wp-login.php 和 /wp-admin/)每天都被机器人针对。这些机器人全天候自动运行,循环使用常见用户名,如 admin、administrator 和 user,配合数百万个常用密码。如果您的网站使用弱密码或对登录尝试没有限制,机器人可以在几小时内猜测进入。本文涵盖您应该立即实施的多层保护,包括有效的 .htaccess 示例、推荐的插件以及如何发现正在进行的攻击。

有效的 WordPress 登录保护依赖于深层防御原则:分层多层防护措施,而不是仅依赖单一措施。如果一层被突破,其他层仍然可以阻止。例如,即使机器人正确猜测您的密码,双因素身份验证仍会阻止其登录。在本指南中,我们将从应用程序级别(WordPress 插件)到网络服务器级别(.htaccess)保护您的网站。

1. 更改登录 URL(最重要)

默认情况下,WordPress 使用 /wp-login.php — 机器人很容易找到。使用 WPS Hide Login 插件将其更改为不可预测的 URL:

  1. 安装插件:WPS Hide Login
  2. 转到设置 → WPS Hide Login
  3. 将登录 URL 更改为自定义内容,例如 /staff-portal-2026
  4. 保存并记住新 URL

完整的登录安全检查清单

在深入了解每项措施之前,这是您应该做的所有事情的摘要表,以及其优先级和设置难度。将其用作检查清单,以确保不会遗漏任何关键步骤:

措施 优先级 难度 工具
强密码(16+ 个字符) 关键 简单 密码管理器
启用双因素身份验证 (2FA) 关键 中等 WP 2FA / Google Authenticator
限制失败的登录尝试 高 简单 限制登录尝试已重新加载
更改/隐藏登录 URL 高 简单 WPS Hide Login
禁用 XML-RPC(如果未使用) 中等 简单 .htaccess / 插件
添加验证码 / reCAPTCHA 中等 简单 reCAPTCHA / hCaptcha 插件
按 IP 限制 wp-admin (.htaccess) 高(如果有静态 IP) 中等 .htaccess

您不必在一天内完成所有这些操作。从标记为"关键"优先级和"简单"难度的项目开始 — 设置强密码并启用 2FA — 然后逐步为您的网站分层添加其余措施。

2. 限制失败的登录尝试

安装 限制登录尝试已重新加载 插件:

3. 启用双因素身份验证 (2FA)

安装 WP 2FA 或 Google Authenticator 插件:

  1. 安装并激活插件
  2. 转到用户 → 个人资料 → 双因素选项
  3. 启用 TOTP(Google Authenticator / Authy)
  4. 用您的验证器应用扫描二维码

4. 使用强管理员密码

5. 使用 IP 白名单阻止 wp-admin (.htaccess)

如果您有静态 IP 地址,请添加到 .htaccess:

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

将 1.2.3.4 替换为您的实际 IP。

6. 禁用 XML-RPC(如果不需要)

XML-RPC 被用于平行暴力破解攻击。添加到 .htaccess:

<Files xmlrpc.php>
  Order Deny,Allow
  Deny from all
</Files>

或使用禁用 XML-RPC 插件。

使用 .htaccess 保护 wp-admin(深入)

在网络服务器级别 (Apache) 使用 .htaccess 文件进行保护有一个关键优势:它在请求到达 PHP/WordPress 之前阻止机器人,节省服务器资源,并且比仅依靠插件更安全。以下是在实践中行之有效的技术。

按 IP 限制 wp-admin 访问

如果您从具有静态 IP 的办公室或家中管理您的网站,您可以通过在 wp-admin/ 文件夹内创建 .htaccess 文件来仅允许您的 IP 访问 wp-admin/ 目录:

<RequireAll>
  Require ip 1.2.3.4
  Require ip 203.0.113.0/24
</RequireAll>

第一行允许单个 IP,第二行允许整个子网(对于 IP 在范围内变化的办公室很有用)。⚠️ 警告: 如果您的 IP 是动态的(每次重置路由器时都会变化),此方法可能会将您锁定在自己的网站之外。改用 2FA + 限制登录。

添加第二个密码层(HTTP Basic Auth)

另一种非常有效的技术是在服务器级别对 wp-login.php 进行密码保护。机器人甚至在到达 WordPress 登录页面之前就会遇到浏览器弹出窗口,要求输入用户名/密码。首先创建 .htpasswd 文件(最好在文档根目录之外),然后将其添加到您的网站根目录的 .htaccess 中:

<Files wp-login.php>
  AuthType Basic
  AuthName "Restricted Area"
  AuthUserFile /home/user/.htpasswd
  Require valid-user
</Files>

使用命令 htpasswd -c /home/user/.htpasswd myadmin 在服务器上创建 .htpasswd 文件,或使用在线 htpasswd 生成器。这几乎完全阻止了暴力攻击,因为典型的机器人无法通过 HTTP Basic Auth 层。

阻止没有 Referer 的请求(过滤虚假 POST)

大多数机器人直接对 wp-login.php 发起没有有效 HTTP Referer 的 POST 请求。您可以使用 mod_rewrite 规则阻止这些:

RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{HTTP_REFERER} !^https://(www\.)?yoursite\.com [NC]
RewriteRule ^(.*)?wp-login\.php(.*)$ - [F]

将 yoursite.com 替换为您的真实域名。此规则只阻止不是来自您自己网站的 POST 请求(登录表单提交),不会影响正常用户。

7. 安装安全插件

一次只使用一个安全插件 — 不要同时安装多个,因为它们可能会冲突、减慢您的网站速度或破坏登录。如果您使用 Wordfence 或 Solid Security,限制登录和 2FA 功能通常是内置的,所以您不需要为它们单独使用插件。

暴力攻击的迹象以及如何应对

及早发现攻击可以让您在账户被入侵之前做出反应。以下是 WordPress 登录页面受到攻击的警告信号:

发现攻击时如何应对:

  1. 立即更改每个管理员密码并强制注销所有会话。
  2. 如果还没有启用 2FA — 它可以立即停止暴力破解,即使密码已泄露。
  3. 通过 Wordfence 或 .htaccess 阻止攻击 IP(Require not ip 1.2.3.4)。
  4. 如果攻击很严重,启用 Cloudflare 的"受攻击模式"以在机器人到达您的服务器之前在 CDN 级别过滤它们。
  5. 使用 Imunify360 或 Wordfence 扫描整个网站的恶意软件,以确保没有后门存在。

常见问题(FAQ)

仅仅更改登录 URL 是否足够安全?

更改登录 URL 是"通过隐晦性实现安全" — 它大大减少了进攻您网站的机器人数量,但如果攻击者发现新 URL,则无法提供 100% 的保护。始终将其与 2FA 和强密码结合使用;千万不要单独依赖这种方法。

我应该禁用 XML-RPC 吗,这会破坏什么吗?

如果您不使用 Jetpack、WordPress 移动应用或需要 XML-RPC 的外部服务,可以禁用它以关闭平行暴力破解向量(XML-RPC 可以在单个请求中测试许多密码)。但如果您通过移动应用管理您的网站,请使用限制 XML-RPC 方法的插件,而不是完全禁用它。

2FA 和限制登录尝试中哪个更重要?

它们的作用不同,应该一起使用。限制登录会减慢机器人的速度并阻止多次失败的 IP,而 2FA 是最后的屏障,即使您的密码泄露也能阻止攻击者。如果必须选择一个,2FA 提供更强的保护 — 但实际上应该同时启用两者。

虚拟主机也能帮助保护免受暴力破解吗?

可以。好的虚拟主机包括服务器级别的保护,例如 Imunify360,它自动检测和阻止重复登录失败的 IP,以及在恶意请求到达 WordPress 之前过滤它们的 WAF(Web 应用防火墙)— 即使您没有自己配置插件,也能提供额外的保护层。

优先级摘要: (1) 更改登录 URL → (2) 限制尝试 → (3) 启用 2FA → (4) 强密码 → (5) 安全插件。完成所有 5 项可将风险降低 95% 以上。

具有内置 WordPress 安全的虚拟主机

AsiaGB 虚拟主机包括 cPGuard 安全、SpamAssassin 和 Imunify360,用于自动恶意软件保护。

查看虚拟主机套餐