fail2ban封禁XMLRPC.PHP 的DDOS攻击

在 CentOS Stream 9 上,您可以使用 Fail2ban 来自动封禁访问 `xmlrpc.php` 的 IP 地址。以下是详细步骤,针对已部署的 Apache HTTP 服务器和 WordPress 容器化的环境进行配置。

### 步骤 1:安装 Fail2ban
首先,确保安装了 Fail2ban。可以使用以下命令进行安装:

sudo dnf install fail2ban

### 步骤 2:配置 Apache 日志格式
确保 Apache 的日志格式包含必要的信息,这样 Fail2ban 可以分析日志。如果使用的是标准日志格式,则应该包含客户端 IP 地址和请求路径。

### 步骤 3:配置 Fail2ban 监控规则
创建或编辑 Fail2ban 的 Apache 配置文件以检测 `xmlrpc.php` 访问行为。

1. 创建新文件 `/etc/fail2ban/jail.d/apache-wordpress.conf` 以包含特定的配置:

[apache-xmlrpc]
enabled = true
port = http,https
filter = apache-xmlrpc
logpath = /var/log/httpd/access_log
maxretry = 3
bantime = 3600

 

– `maxretry = 3` 表示在 3 次失败尝试后封禁 IP。
– `bantime = 3600` 表示封禁时间为 1 小时。

2. 创建或编辑 `/etc/fail2ban/filter.d/apache-xmlrpc.conf` 以定义过滤器:

[Definition]
failregex = ^<HOST> -.* “(POST|GET) /xmlrpc\.php HTTP/.*”$
ignoreregex =

– 这里的正则表达式检测到 `/xmlrpc.php` 的 POST 或 GET 请求并将其视为违规行为。

### 步骤 4:启动并启用 Fail2ban 服务
启动 Fail2ban 并设置为开机自启动:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

### 步骤 5:验证配置
验证配置文件是否正确:

sudo fail2ban-client -d

如果没有任何错误,可以通过以下命令查看是否正确启动了 Apache 相关的 jail:

sudo fail2ban-client status apache-xmlrpc

这将显示该 jail 的状态以及目前被封禁的 IP 列表。

### 步骤 6:测试封禁
可以尝试访问 WordPress 站点的 `/xmlrpc.php` 路径,通过多次请求来测试 Fail2ban 是否会成功封禁您的 IP。

### 其他建议
1. **禁用 XML-RPC 功能**:如果您不需要 XML-RPC 功能,可以通过插件(如 “Disable XML-RPC”)或在 `functions.php` 文件中添加代码来禁用它,以增强安全性。

2. **使用 WAF(Web 应用防火墙)**:您还可以考虑使用 Web 应用防火墙(如 `mod_security`)来对特定请求进行拦截,进一步加强 WordPress 的安全。

这种方法结合了日志分析和自动化封禁,能有效减少针对 `xmlrpc.php` 的暴力攻击或其他恶意访问行为。