WordPress 新站必做的 12 项基础安全加固:从登录到文件权限(附 Nginx 规则)
WordPress 新站必做的 12 项基础安全加固:从登录到文件权限(附 Nginx 规则)
我见过不少 WordPress 站“内容刚写了三篇”,后台就开始被爆破、被挂马、被塞跳转广告。更尴尬的是:很多站并不是遇到了什么高端攻击,而是栽在弱口令、可写目录、过期插件这些基础问题上。
下面这 12 项是我给新站做上线检查时常用的清单,按优先级排好。你不需要一口气全做完,但至少把前 6 项做了,风险会立刻下降一大截。
先给你一张“抄作业清单”(建议按顺序执行)
1) 管理员账号/密码/2FA2) 登录爆破防护(限速/封禁/验证码)3) 更新策略(核心/主题/插件)4) 禁止后台在线编辑代码5) 文件权限与属主(别 777)6) 上传目录禁止执行 PHP7) 关闭或限制 xmlrpc.php8) 保护敏感文件(备份包、日志、.env)9) 安全头(基础三件套)10) 备份与恢复演练(比“安全插件”更重要)11) WAF/防扫描(有条件就上)12) 监控与巡检(别等用户告诉你被黑)
下面逐项展开。
1)管理员账号:别给爆破留“默认答案”
- 用户名不要用
admin/administrator - 密码别用生日/手机号/站名
- 直接开 2FA(二步验证)
我自己的习惯:新站上线当天就把管理员账号改成不常见的名字,然后再建一个“日常编辑账号”(权限低一点),平时用编辑账号写文章,管理员账号尽量少登录。
2)登录爆破防护:别让对方无限试
你会发现很多攻击是脚本扫后台 + 暴力撞库。最简单有效的做法就是:
- 限制登录尝试次数(插件或 WAF)
- 登录失败触发封禁(fail2ban/面板策略/安全插件)
- 必要时加验证码(尤其是站点有点流量后)
如果你用 Nginx,可以加一个基础限速(示意):
# http 块里定义限速区
limit_req_zone $binary_remote_addr zone=wp_login:10m rate=5r/m;
server {
location = /wp-login.php {
limit_req zone=wp_login burst=10 nodelay;
include fastcgi_params;
# 你的 PHP-FPM 转发配置...
}
}
别指望“改后台路径”能解决安全问题,但限速确实能让爆破变得很痛苦。
3)更新策略:漏洞公开后,拖一天就多一天风险
WordPress 安全事件里,插件漏洞占比很高。建议你定个简单规则:
- 核心/插件/主题:至少每周检查一次
- 不用的插件:直接删除(不是停用)
- 插件少而精:功能重复的尽量合并
如果你担心更新翻车,那就先在低峰期更新,并且保留可回滚的备份(见第 10 条)。
4)禁止后台在线编辑代码:拿到后台 ≠ 直接写马
很多人不知道 WordPress 默认允许在后台编辑主题/插件文件。拿到管理员账号后,对方可以直接写 PHP。
在 wp-config.php 加这一行:
define('DISALLOW_FILE_EDIT', true);
这条是“低成本高收益”。
5)文件权限与属主:不要 777,不要把站点目录交给 Web 用户
常见翻车:为了“解决权限问题”,把整个站点目录 chmod -R 777。这等于说“谁都能写”。
一个相对安全的参考(按实际用户组调整):
# 假设站点目录在 /var/www/wordpress
cd /var/www/wordpress
# 目录 755、文件 644
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
# wp-config.php 收紧
chmod 640 wp-config.php
如果你用面板或特定用户跑 PHP-FPM,属主/属组也要配合(别硬套命令)。原则就一句:能不写就不写,能少写就少写。
6)上传目录禁止执行 PHP:堵住“上传木马”的后路
WordPress 上传目录通常是 wp-content/uploads/。建议直接禁止执行 PHP:
location ~* /wp-content/uploads/.*\.php$ {
deny all;
}
这条非常常见,也非常有效。
7)xmlrpc.php:不用就关,用就限
xmlrpc.php 常被用来放大爆破/刷请求。
- 你不用远程发布/第三方同步:直接禁用
location = /xmlrpc.php { deny all; }
如果你确实要用(比如某些客户端),那就至少对访问做限速/白名单。
8)保护敏感文件:备份包、日志、.env 都别让人下载
我见过最离谱的情况是:站长把数据库备份文件直接扔在网站根目录,然后被人下载走了。
Nginx 可以这样挡一层:
location ~* \.(env|log|bak|sql|zip|tar|gz)$ { deny all; }
location ~* /(\.git|\.svn)/ { deny all; }
9)安全头(基础三件套):先把最容易被利用的点收紧
add_header X-Frame-Options SAMEORIGIN always;
add_header X-Content-Type-Options nosniff always;
add_header Referrer-Policy no-referrer-when-downgrade always;
HSTS/CSP 可以更进一步,但建议你在确认没有混合内容、没有奇怪第三方脚本依赖后再上。
10)备份与恢复演练:这才是“终极保险”
安全做得再好,也要假设自己会翻车。
建议(保守但实用):
- 数据库:每日备份,保留 7–30 天
- 文件:每周备份(上传目录、主题、关键配置)
- 至少做一次恢复演练(把备份恢复到另一台机器/另一个目录试跑)
重点:只做备份不演练,等出事时你会发现“备份不可用”。
11)WAF / 防扫描:有条件就上
如果你用 CDN(Cloudflare/阿里云/腾讯云 等),一般都有基础 WAF 或规则引擎。对新站来说,开个基础防护就够用:
- 拦截明显的扫描器
- 拦截注入/常见攻击 payload
- 对
/wp-login.php这类路径做更严格策略
12)监控与巡检:别等用户告诉你“怎么跳博彩了”
最实用的监控项其实很朴素:
- 5xx、404 的异常飙升
- 登录失败次数激增
- 站点文件最近修改时间异常(尤其是 uploads 里出现 php)
如果你已经出现过挂马/跳转,建议你看看站内这篇排查与清理思路:
- 网站被 JS 挂马后快速排查清理与防复发实战指南
总结:新站安全就是“把门锁好 + 把钥匙收好 + 有备份能重来”
WordPress 安全没有银弹,但也不需要搞得特别复杂。把账号、权限、更新、备份这四件事做扎实,你的网站会比 90% 的新站更抗打。
