DDoS(分布式拒绝服务)攻击会严重影响 WordPress 网站的可用性,以下是阻止和防止 DDoS 攻击的综合方法:

1. 使用专业 DDoS 防护服务

  • CDN 服务:启用 Cloudflare、Sucuri 或 Akamai 等 CDN,它们能分流流量并过滤恶意请求
    • Cloudflare 的 "Under Attack Mode" 可有效应对大规模 DDoS
  • 专业防护服务:考虑 AWS Shield、Google Cloud Armor 等针对高流量攻击的防护

2. 服务器层面防护

  • 配置防火墙
    • 使用服务器防火墙(如 UFW、CSF)限制每秒连接数
    • 配置 Nginx/Apache 限制单个 IP 的请求频率:
    nginx
    # Nginx配置示例(限制单个IP的请求速率)
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    limit_req zone=one burst=20 nodelay;
    
  • 升级服务器:确保服务器有足够的带宽和资源应对流量峰值

3. WordPress 特定防护措施

functions.php中添加
// 禁用XML-RPC功能
add_filter('xmlrpc_enabled', '__return_false');

// 限制登录尝试
function limit_login_attempts() {
    $transient = 'login_attempts_' . $_SERVER['REMOTE_ADDR'];
    $attempts = get_transient($transient);
    
    if ($attempts === false) {
        set_transient($transient, 1, 3600); // 1小时有效期
    } else {
        if ($attempts > 5) { // 限制5次尝试
            wp_die('登录尝试次数过多,请1小时后再试。');
        }
        set_transient($transient, $attempts + 1, 3600);
    }
}
add_action('login_form', 'limit_login_attempts');

// 屏蔽pingback请求
add_filter('xmlrpc_methods', function($methods) {
    unset($methods['pingback.ping']);
    unset($methods['pingback.extensions.getPingbacks']);
    return $methods;
});
wp-config.php中添加
// 限制XML-RPC请求(常被用于DDoS攻击)
define('XMLRPC_REQUEST', false);

// 增加内存限制应对流量峰值
define('WP_MEMORY_LIMIT', '256M');


4. 安装安全插件

  • Wordfence Security:提供防火墙、恶意流量检测和 IP 封锁功能
  • Sucuri Security:包含 DDoS 防护和恶意软件扫描
  • WP Fail2Ban:将多次失败的登录尝试记录到服务器日志并封锁 IP

5. 其他实用措施

  • 隐藏 WordPress 版本:避免攻击者针对特定版本漏洞
  • 禁用不必要的服务:如 pingbacks、trackbacks 等
  • 定期备份:确保攻击后能快速恢复网站
  • 使用 Web 应用防火墙 (WAF):过滤恶意请求模式
  • 实施地理封锁:如果网站目标用户集中在特定地区,可封锁其他地区 IP

6. 攻击发生时的应对

  1. 立即启用 CDN 的 "攻击模式"
  2. 联系主机提供商寻求紧急支援
  3. 暂时切换到静态维护页面
  4. 分析访问日志识别攻击源并封锁

DDoS 防护是一个持续过程,结合多种方法可以显著提高网站的抗攻击能力。对于高流量网站,建议投资专业的 DDoS mitigation 服务。