WordPress作为全球最受欢迎的CMS,也是黑客攻击的头号目标。每天有超过10万次针对WordPress网站的攻击尝试。本文提供从登录防护到服务器级别的完整安全加固方案。
一、登录安全防护
1. 强密码策略
安装WP Security插件强制执行强密码策略:
// wp-config.php 强制密码强度
define('WP_ENFORCE_STRONG_PASSWORD', true);
建议密码:12位以上,包含大小写字母、数字、特殊符号,每3个月更换一次。
2. 限制登录尝试次数
阻止暴力破解最有效的方法:
// wp-config.php 限制登录尝试
define('WP_LOGIN_LIMIT', 5);
define('WP_LOGIN_TIMEOUT', 300); // 5分钟内最多5次
或使用Limit Login Attempts Reloaded插件,设置IP封锁规则。
3. 双因素认证(2FA)
安装Wordfence或WP 2FA插件,为管理员账号启用2FA:
- TOTP方式(Google Authenticator):手机APP生成动态验证码
- 邮件验证:登录时发送验证码到注册邮箱
- 硬件密钥(YubiKey):最高安全级别
4. 隐藏登录页面
将默认登录地址wp-admin和wp-login.php改为自定义地址:
// 使用WPS Hide Login插件
// 将登录地址改为如 /secret-login
二、用户权限管理
5. 最小权限原则
WordPress角色权限对照:
| 角色 | 权限 | 适用场景 |
|---|---|---|
| 订阅者 | 阅读 | 付费会员 |
| 投稿者 | 撰写文章 | 内容贡献者 |
| 作者 | 发布自己的文章 | 独立撰稿人 |
| 编辑 | 审核所有文章 | 内容主编 |
| 管理员 | 全站管理 | 网站所有者 |
避免给普通编辑分配管理员账号。
6. 禁用用户枚举
阻止攻击者通过author页面枚举用户名:
# Nginx配置
location /author {
return 403;
}
# WordPress函数禁用
add_filter('author_rewrite_rules', '__return_empty_array');
三、数据库安全
7. 更改数据库表前缀
默认表前缀wp_是攻击目标,安装时务必修改:
-- 重命名表前缀示例(从wp_改为shm_)
RENAME TABLE wp_posts TO shm_posts;
RENAME TABLE wp_users TO shm_users;
已有网站可用WP-DB Prefix插件批量修改。
8. 数据库定时备份
# 每日自动备份脚本
0 3 * * * mysqldump -u dbuser -p'dbpass' dbname | gzip > /backup/wordpress_$(date +\%Y\%m\%d).sql.gz
推荐使用UpdraftPlus插件实现定时自动备份到云存储。
9. 禁用SQL错误显示
// wp-config.php
define('WP_DEBUG_DISPLAY', false);
四、文件与目录安全
10. 文件权限设置
# 正确权限设置
chmod 755 /wp-content
chmod 644 /wp-config.php
chmod 444 /wp-config.php # 只读
chmod 644 /wp-content/themes/*.php
chmod 644 /wp-content/plugins/*.php
11. 禁用PHP文件执行
防止上传的恶意PHP文件被执行:
# 在wp-content/uploads目录禁用PHP
location /wp-content/uploads {
location ~ \.php$ {
deny all;
}
}
12. 禁止文件编辑
// wp-config.php 禁用主题/插件编辑器
define('DISALLOW_FILE_EDIT', true);
13. 定期扫描文件变更
安装Wordfence,设置每日文件变更扫描,任何核心文件或主题文件变更都会收到邮件告警。
五、防火墙配置
14. Web应用防火墙(WAF)
推荐云WAF方案:
- 阿里云WAF:国内站点首选,功能完善
- Cloudflare Pro:海外业务,性价比较高
- Wordfence:自托管方案,免费版足够日常防护
15. Nginx基础防火墙规则
# 阻止恶意请求
if ($request_uri ~* (\.\./|\.git|wp-config|readme|install)) {
return 403;
}
# 限制POST请求大小
client_max_body_size 50m;
六、安全插件推荐
| 插件 | 核心功能 | 免费版 |
|---|---|---|
| Wordfence | 防火墙+恶意软件扫描 | 是 |
| iThemes Security | 全面安全加固 | 是 |
| UpdraftPlus | 自动备份 | 是 |
| WP 2FA | 双因素认证 | 是 |
| All In One WP Security | 安全评分+防护 | 是 |
七、SSL与API安全
16. 全站强制HTTPS
# Nginx强制HTTPS
server {
listen 80;
server_name yourdomain.com;
return 301 https://$server_name$request_uri;
}
17. 禁用XML-RPC
XML-RPC是暴力破解和DDoS攻击的常见入口:
location /xmlrpc.php {
deny all;
}
或使用插件Disable XML-RPC API。
18. REST API访问控制
// 禁止未登录用户访问REST API
add_filter('rest_authentication_errors', function($access) {
if (!is_user_logged_in()) {
return new WP_Error('rest_not_logged_in', 'Authentication required.', array('status' => 401));
}
return $access;
});
八、监控与响应
19. 安全日志审计
安装WP Security Audit Log插件,记录所有用户操作:登录/登出、文章编辑、插件安装等,配合日志告警及时发现异常行为。
20. 应急响应流程
一旦发现被入侵:
1. 立即重置所有密码
2. 检查最近修改的文件:find /var/www/html -mtime -1 -name "*.php"
3. 使用Wordfence扫描恶意代码
4. 从备份恢复被感染文件
5. 通知主机商和用户(如数据泄露)
总结
WordPress安全没有一劳永逸的方案,需要多层防护、定期审计、及时更新。建议每月检查:密码强度→插件更新→日志审计→备份测试。安全投入是对业务的最佳保险。

评论(0)