nginxproxymanager fail2ban 导致 401

nginxproxymanager fail2ban 导致 401

我已经设置了 nginxproxymanager,并希望使用 fail2ban 来确保安全。我对 fail2ban 还很陌生,需要大家的建议。

登录失败时的访问日志如下

[12/Sep/2022:09:47:54 +0000] - 401 401 - POST http nginx.example.com "/api/tokens" [Client 192.168.X.XX] [Length 51] [Gzip -] [Sent-to 192.168.X.XX] "Mozilla/5.0...
[12/Sep/2022:11:11:32 +0000] - 401 401 - POST http nginx.example.com "/api/tokens" [Client 192.168.X.XX] [Length 51] [Gzip -] [Sent-to 192.168.X.XX] "Mozilla/5.0...
[12/Sep/2022:11:12:02 +0000] - 401 401 - POST http nginx.example.com "/api/tokens" [Client 192.168.X.XX] [Length 51] [Gzip -] [Sent-to 192.168.X.XX] "Mozilla/5.0...
[12/Sep/2022:11:12:43 +0000] - 401 401 - POST http nginx.example.com "/api/tokens" [Client 192.168.X.XX] [Length 51] [Gzip -] [Sent-to 192.168.X.XX] "Mozilla/5.0...
[12/Sep/2022:11:14:54 +0000] - 401 401 - POST http nginx.example.com "/api/tokens" [Client 192.168.X.XX] [Length 51] [Gzip -] [Sent-to 192.168.X.XX] "Mozilla/5.0...
[12/Sep/2022:11:15:26 +0000] - 401 401 - POST http nginx.example.com "/api/tokens" [Client 192.168.X.XX] [Length 51] [Gzip -] [Sent-to 192.168.X.XX] "Mozilla/5.0...

我真的不知道如何构建 failregex,请帮忙

答案1

下面是一个 jail 示例,它将查找与您的日志格式相对应的每个 401 次尝试:

[nginxpm]
backend = auto
logpath = /path/to/log
filter =
failregex = ^\s*(?:\[\]\s+)?- 401 \d+ - [A-Z]+ \w+ \S+ "[^"]+" \[Client <ADDR>\]
enabled = true

如果您需要更精确的内容,例如您可以使用POST而不是[A-Z]+,或者"/api/tokens\b[^"]*"而不是"[^"]+"(那么它只会找到对 的 POST 请求/api/tokens?...

登录失败时的访问日志如下

至于访问日志,不建议这样做(因为可能存在大量寄生流量)——最好将 nginx 配置为将未经授权的尝试记录到另一个日志文件中,并在监狱中对其进行监控。或者可以改为监控错误日志。请参阅fail2ban :: wiki :: 最佳实践 # 减少寄生日志流量了解详情。

相关内容