配置fail2ban

要让 Fail2Ban 封锁所有访问日志中来自 https://servicewechat.com 的请求来源 IP,只要出现一次就立即封锁,可以通过以下步骤实现:


🛠️ 步骤一:创建 Fail2Ban 过滤器

创建新的过滤器文件:

1
sudo vi /etc/fail2ban/filter.d/servicewechat.conf

内容如下(精准匹配 servicewechat.com):

1
2
3
[Definition]
failregex = <HOST> -.*"GET .*servicewechat\.com.*
ignoreregex =

解释:

  • 会自动提取 IP。
  • 匹配你 access.log 中包含 servicewechat.com 的请求。

你可以先用 grep 确认是否能匹配:

1
grep 'servicewechat.com' /root/nginx/logs/access.log

📦 步骤二:创建 Jail 配置

新建 Jail 配置文件:

1
sudo vi /etc/fail2ban/jail.d/servicewechat.conf

内容如下:

1
2
3
4
5
6
7
8
[servicewechat]
enabled = true
filter = servicewechat
logpath = /root/nginx/logs/access.log
maxretry = 1
findtime = 3600
bantime = 86400
action = iptables[name=servicewechat, port=http, protocol=tcp]

说明:

  • maxretry = 1:出现一次即封锁。
  • bantime = 86400:封锁 24 小时。
  • action:使用 iptables 阻止 HTTP 请求。

🔁 步骤三:重启 Fail2Ban

1
sudo systemctl restart fail2ban

查看状态确认规则生效:

1
sudo fail2ban-client status servicewechat

你应该能看到:

1
2
3
4
5
Status for the jail: servicewechat
|- Filter
| `- Currently failed: ...
|- Actions
| `- Banned IP list: ...

✅ 完成!

现在,一旦有访问 servicewechat.com 的记录出现在 /root/nginx/logs/access.log,对应的 IP 就会立刻被封禁 24 小时。

如果你需要更高级的匹配规则(如匹配 POST、特定 User-Agent、Referer),也可以告诉我,我来帮你精细化调整。