WordPress 核心安全基线清单:文件权限、wp-config、登录、插件与备份怎么查

WordPress 安全基线先看文件权限、wp-config、登录入口、插件更新和备份恢复,而不是先堆安全插件。

WordPress 安全基线先看文件权限、wp-config、登录入口、插件更新和备份恢复,而不是先堆安全插件。

  1. 01先读摘要,判断是否与你的场景相关。
  2. 02再看来源,保留继续查证的路径。
  3. 03最后看步骤、风险和可复用动作。

WordPress 安全基线不需要一开始就上很复杂的 WAF 或企业级监控,而是先检查主机、文件权限、wp-config、登录入口、插件更新和备份恢复这几层。官方 Hardening 文档明确提到文件权限、wp-admin 保护、wp-config.php 保护和关闭文件编辑等做法。下面这份清单按顺序排,适合独立站长或小团队在没有专职安全人员时自查。

适用场景

  • 你自己维护 WordPress 站点,但不清楚当前文件权限和 wp-config 是否过松。
  • 你准备把站点从 demo 升级为正式业务,需要先补安全基线。
  • 站点有多个管理员、插件或主题,需要明确谁可以改文件和安装代码。
  • 你希望在攻击发生前确认备份能真正恢复,而不是只把备份文件放上去。

不适用场景

  • 你只想通过插件扫描获得“安全”状态,不准备检查服务器配置。
  • 你完全没有 SSH、FTP 或主机文件管理权限,无法执行权限和文件检查。
  • 站点已经被入侵,你需要的不是基线而是隔离、取证和重建。
  • 你准备禁用所有写权限,却不了解主题更新、插件更新和上传目录的写入需求。

准备材料

  • WordPress 后台管理员账号和主机 SSH/FTP 权限。
  • 当前插件、主题和 WordPress 版本清单。
  • 数据库备份工具或主机自带备份功能。
  • 一个隔离的测试环境,用来验证权限改动和恢复流程。
  • 负责安全复查的人,以及紧急恢复联系方式。

步骤一:先建立站点台账和备份

官方 Hardening 文档把备份放在安全工作的准备阶段,而不是出事后再做。先记录 WordPress 版本、PHP 版本、数据库地址、插件主题清单和文件路径,再确认备份可以恢复到独立环境。没有经过恢复测试的备份只能算文件副本。

  1. 导出插件、主题和核心文件清单。
  2. 记录 wp-config.php 里的数据库前缀和账号用途。
  3. 做一次完整备份,包括数据库、wp-content、.htaccess 和 wp-config。
  4. 在测试环境恢复一次,确认网站能打开且插件正常。

步骤二:按最小需要设置文件权限

官方文件权限文档建议一般目录为 755,一般文件为 644,wp-config.php 可以收紧到 440 或 400。共享主机如果使用 suexec,PHP 以文件所有者运行,上传目录也不需要 777。权限改得太宽会让任意写入变成代码执行,改得太窄又会造成更新失败。

  • 目录使用 755 或 750,不要使用 777。
  • 普通文件使用 644 或 640,wp-config.php 使用 400 或 440。
  • wp-content/uploads 需要写权限,但目录本身仍应避免 777。
  • 检查 wp-content/cache 等插件目录是否有非必要全局写权限。

在 shell 中可以这样检查主要文件:

find /path/to/wordpress -type d -exec ls -ld {} \; | head -50
ls -l /path/to/wordpress/wp-config.php

步骤三:加固 wp-config.php 和文件编辑

官方文档建议把 wp-config.php 放在 WordPress 安装目录上一级,并用服务器配置阻止外部访问。另一个高价值项是关闭后台文件编辑器,因为它会让登录后的管理员直接改 PHP 文件。可以在 wp-config.php 中加入:

define( 'DISALLOW_FILE_EDIT', true );

这一行相当于移除 edit_themes、edit_plugins 和 edit_files 能力。不要只依赖主题设置里的禁用选项,因为攻击者一旦进入后台,最优先的动作就是改主题文件。

  1. 确认 wp-config.php 不在浏览器可访问目录。
  2. 在 wp-config.php 加入 DISALLOW_FILE_EDIT true。
  3. 检查表前缀是否仍使用默认 wp_,并确认数据库账号不是超级管理员。
  4. 不要让 wp-config.php 在日志、备份或版本控制中出现。

步骤四:保护登录和后台入口

官方文档提到可以用服务器端 BasicAuth 给 wp-admin 加第二层保护,但要注意 admin-ajax.php 等 AJAX 路径可能被破坏。更通用的做法是启用两步验证、限制登录尝试、禁用不需要的用户和检查审计日志。

  • 管理员账号不使用 admin 作为用户名。
  • 为所有可登录用户启用 2FA 或安全密钥。
  • 限制登录尝试次数,并记录失败来源 IP。
  • 移除长期不用的作者、编辑和管理员账号。
  • 定期查看 wp_users 和最近登录记录,发现新管理员立即处理。

步骤五:控制插件、主题和自动更新边界

插件和主题是 WordPress 常见入口。官方建议只从可信来源安装,及时更新,并评估插件是否真的需要写权限。不要在正式环境随手安装来源不明的插件,也不要让所有用户都能安装插件。

  1. 把安装插件的权限限制给站点管理员或更低层级的特定角色。
  2. 对不再使用的插件先停用,确认没有依赖后删除。
  3. 记录每个插件的作用、更新频率和是否有特权操作。
  4. 更新前在测试环境验证,尤其是更新前有改动数据库的插件。
  5. 关闭文件编辑器后,确认主题和插件仍能通过后台正常更新。

步骤六:配置日志并做外部巡检

官方 Hardening 文档建议保留日志并定期检查站点状态。WordPress 自身 debug.log 不要在生产长期开启,但主机错误日志、安全插件日志和登录审计可以保留。还可以从外部检查首页、登录页、REST API 和 sitemap 是否可访问,确认没有暴露敏感文件。

  • 检查 wp-config.php 的 WP_DEBUG 是否在生产关闭。
  • 确认 wp-content/debug.log 不包含数据库凭据或堆栈。
  • 检查常见敏感路径,例如 .git、.env、wp-config.php.bak。
  • 外部检查登录页和 XML-RPC 是否按需关闭。
  • 把异常登录、文件变更和插件变更通知发送给负责人。

可复制检查表

WordPress 版本:\nPHP 版本:\n文件目录权限:\n文件权限:\nwp-config.php 权限:\nDISALLOW_FILE_EDIT:\n表前缀:\n数据库账号权限:\n管理员用户名:\n2FA 状态:\n登录尝试限制:\n插件数量:\n未使用插件:\n自动更新策略:\n备份位置:\n最近恢复测试:\n日志位置:\n外部检查日期:

实际例子:独立站从默认安装变成可维护的基线

一个内容站一直使用默认 admin 用户名,wp-config.php 是 644,后台文件编辑器开着,uploads 目录曾出现 777。站长先做了完整备份并在测试环境恢复,再把 wp-config.php 改到 400、加入 DISALLOW_FILE_EDIT true、把 admin 用户名换成普通账号并开启 2FA。随后删除两个不用插件,更新到当前版本。两周后主机报告扫描没有发现高危权限,站长也能确定备份可以恢复。

验收清单

  • 备份已完整并经过恢复测试。
  • 目录权限没有 777,普通文件权限符合主机要求。
  • wp-config.php 权限已收紧,且不在公开目录。
  • DISALLOW_FILE_EDIT 已启用。
  • 管理员账号不是 admin,2FA 已开启。
  • 未使用插件已删除,更新流程有测试环境。
  • 生产 debug 日志关闭,敏感路径未暴露。

常见坑

  • 把 uploads 设为 777,因为插件报权限错误。
  • 关闭文件编辑器后,误以为主题就不能通过后台更新。
  • 修改 wp-config.php 时没有备份,语法错误导致站点 500。
  • 只测文件权限,不测备份恢复。
  • 用安全插件替代主机层权限检查,报告全绿但真实配置过松。
  • 把 wp-config.php 提交到 Git 或上传到公开目录。

排错路径

  • 插件更新提示无法写入:检查 wp-content、plugins 目录归属和权限,而不是直接设 777。
  • 修改权限后网站 500:先恢复 wp-config.php 原权限,再检查 PHP 错误日志。
  • 2FA 无法登录:准备恢复码或主机层临时绕过,不要直接删用户表。
  • 后台编辑器消失:确认 DISALLOW_FILE_EDIT 已设置,这是预期行为。
  • 备份恢复失败:分别测试数据库导入和文件上传,确认 wp-config 中的数据库名、用户和密码匹配。

后续维护建议

更新日期:2026-08-16。建议每月检查一次文件权限、登录失败记录和未使用插件,每季度做一次完整备份恢复测试,每次 WordPress 大版本升级前再对照官方 Hardening 文档。权限和备份是基线,不是一次做完就永久有效的状态;新增目录、插件或迁移主机后都要重新检查。

公开来源

  1. WordPress Developer Docs: Security Hardening
  2. WordPress Developer Docs: Changing File Permissions
  3. WordPress Developer Docs: wp-config.php

订阅更新

输入邮箱,订阅站点更新。

参与讨论

你的邮箱不会公开。 标有 * 的为必填项。