WordPress安全基线:用户角色、两因素认证与登录保护
一、先盘账号:大多数站的管理员太多了
WordPress入侵的第一步,永远是登录页。而登录页能被攻破,前提是攻击者手里有一组可用的账号密码。所以安全的起点不是装插件,是数清楚你到底有几个能进后台的人。
很多站建了两年,管理员账号攒了七八个:外包的、前同事的、测试用的,有的密码还设成123456。这些账号里任何一个泄露,都等于后台大门敞开。
场景示例一:一个站被挂了黑链,事后查日志发现是半年前离职的外包账号登录的——人走了,账号没删,密码还是当年聊天记录里发过的那串。攻击方不需要任何漏洞。
技术栈选型时怎么规划账号,见WordPress独立站技术栈;被入侵后的清理流程,见网站被黑之后。
| 角色 | 权限范围 | 该给谁 |
|---|---|---|
| Administrator | 全站:装插件、改代码、删用户 | 实际管事的人,≤2个 |
| Editor | 管理所有内容与评论 | 内容负责人 |
| Author | 只能写和管理自己的文章 | 投稿作者 |
| Contributor | 写草稿不能发布 | 外部约稿人 |
| Subscriber | 只能评论 | 普通访客 |
二、最小权限:别让写文章的人能装插件
权限的原则是:一个账号能干的事,刚好等于它完成工作所需的最少范围。写博客的运营不需要装插件、改主题,给Editor或Author就够了;只有真正维护站点的人,才配Administrator。
离职处理要分两步:先把人降权、禁用,观察一到两周确认没有依赖它的自动化任务,再删除。直接删可能丢掉它发布的文章作者归属。
还要删掉那个默认的admin用户名。很多爆破工具第一轮就试admin这个账号名,如果你的后台恰好有它,等于把半个密码交了出去。
密码本身也要够长。八位纯数字在现代爆破面前基本等于没有,管理员密码建议十二位以上、混大小写和符号,且不同账号不要复用同一串。复用密码是撞库得手的主因。
| 岗位 | 建议角色 | 不应授予 |
|---|---|---|
| 站长/技术负责人 | Administrator | — |
| 内容编辑 | Editor | 装插件、改代码 |
| 撰稿人 | Author | 改别人的文章、改主题 |
| 外部约稿 | Contributor | 直接发布 |
| 实习/临时 | Contributor | 任何发布权限 |
三、两因素认证:密码之外再加一把锁
两因素认证(2FA)的意义在于:哪怕密码泄露了,攻击者没有你手机上的动态验证码,也登不进来。这是对抗撞库最有效的一层,因为撞库攻击靠的正是”密码在别处泄露”。
方式选TOTP验证器(Google Authenticator、Authy这类App),不要用短信。短信验证码可被SIM劫持截走,TOTP是本地生成,不依赖运营商。
强制策略分两步:Administrator立即强制开启,不开就不让登录;其余角色给一个两周宽限期,逾期自动锁定。配置方法见安全加固独立站安全加固。
场景示例三:团队五个人,起初只有技术负责人开了两因素。一次邮件泄露了运营的密码,攻击者撞上后台,因为运营账号没开2FA,第二把锁形同虚设。两周后全员强制开启,这类风险才真正封死。
| 2FA方式 | 安全性 | 建议 |
|---|---|---|
| TOTP验证器App | 高,本地生成不联网 | 推荐全员使用 |
| 短信验证码 | 中,可被SIM劫持 | 不建议作为主方式 |
| 邮件验证码 | 低,邮箱常同密码泄露 | 仅作备用 |
| 硬件密钥 | 最高 | 管理员可选配 |
四、登录保护:限流和封锁比改路径有用
这里要纠正一个流行误区。很多教程让你把/wp-admin改成一个奇怪路径,觉得这样攻击者找不到后台。实际上定向攻击者会用工具扫描出登录页在哪,改路径只是增加一点点麻烦,挡不住爆破。
真正有效的是两件事:登录失败5次就锁定该IP一段时间(比如15分钟),让自动化爆破跑不动;关掉XML-RPC的系统发布方法,那是很多批量爆破脚本的入口。
场景示例二:日志里看到某个IP一小时内试了800组密码,用户名全是常见名。开了失败5次锁定后,这个IP在第六次尝试就被挡在门外,后续尝试全部秒拒。
还有个细节:让登录接口每次失败都轻微延迟响应,脚本批量试密码的成本就上去了。站做大之后,登录层前面再挂一层云WAF,分布式撞库在到达WordPress之前就被拦。
| 保护动作 | 作用 | 局限 |
|---|---|---|
| 失败5次锁定IP | 打停自动化爆破 | 分布式攻击需配合云WAF |
| 关闭XML-RPC | 堵批量脚本入口 | 若用App发布需保留 |
| 隐藏WP版本号 | 不暴露旧版本漏洞 | 只是减少信息暴露 |
| 改后台路径 | 增加一点点扫描成本 | 挡不住定向攻击 |
| 禁用后台文件编辑 | 防被登入后改主题 | 需走SFTP改代码 |
五、配套:备份、监控与最小攻击面
安全做得再好,也要假设哪天会被攻破,因此备份是最后一道保险。数据库和文件分开备份、异地存放、每季度做一次恢复演练——备份不能恢复等于没备份。方法见独立站备份策略。
攻击面要持续收窄:删掉不用的插件和主题,每个闲置插件都是一个潜在漏洞;后台监控要告警异常登录,比如从不常见的地区、非工作时间的管理员登录。监控阈值见独立站监控体系。
还有一条红线:一旦发现某个密码在别的地方泄露过,要全站轮换所有账号密码。撞库攻击会拿这串密码去试你后台,前面所有防护在密码正确时都会失效。
| 动作 | 频率 | 合格标准 |
|---|---|---|
| 盘点管理员账号 | 每月 | administrator ≤2个 |
| 审查闲置插件主题 | 每季度 | 停用即删除 |
| 备份恢复演练 | 每季度1次 | 能在2小时内恢复 |
| 异常登录告警 | 实时 | 异地登录即时通知 |
| 密码轮换 | 泄露后立即 | 全员改密并开2FA |
FAQ 常见问题
WordPress装一个安全插件是不是就够了?
把 /wp-admin 改成别的路径能防住黑客吗?
两因素认证用短信验证码行不行?
离职员工的WordPress账号怎么处理?
Administrator账号留几个合适?
被暴力破解时日志里是什么样子?
写在最后
WordPress安全是一件反直觉的事:你以为要靠复杂的插件和高深的规则,实际决定站点命运的,是有没有把多余的管理员删掉、有没有给每个账号加第二把锁。这两件事不花钱,却挡住了绝大多数入侵。
落地三步:今天就盘点用户列表,把administrator压到2个以内;给所有管理员强制开TOTP两因素;登录失败5次锁定并关掉XML-RPC。之后每月审一次账号,每季度做一次恢复演练。
一句可以记住的话:安全不是把门锁得多花哨,而是先把不该有钥匙的人的钥匙收回来。
