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安全没有一劳永逸的方案,需要多层防护、定期审计、及时更新。建议每月检查:密码强度→插件更新→日志审计→备份测试。安全投入是对业务的最佳保险。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。