feat(traefik): add fail2ban plugin with global middleware

Registers tomMoulard/fail2ban v0.7.1 as an experimental plugin and
applies it globally on the web-secure entrypoint alongside security-headers.
Bans IPs after 5 failures within 10 minutes for 3 hours; whitelists
RFC1918 ranges to protect internal/Docker traffic.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-17 10:05:11 +02:00
co-authored by Claude Sonnet 4.6
parent b69951f917
commit 586f137cf9
2 changed files with 18 additions and 1 deletions
+3 -1
View File
@@ -19,10 +19,12 @@ services:
- "--entrypoints.web.http.redirections.entryPoint.to=web-secure"
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
- "--entrypoints.web.http.redirections.entryPoint.permanent=true"
- "--entrypoints.web-secure.http.middlewares=security-headers@file"
- "--entrypoints.web-secure.http.middlewares=security-headers@file,fail2ban@file"
- "--certificatesresolvers.resolver.acme.tlschallenge=true"
- "--certificatesresolvers.resolver.acme.email=${ACME_EMAIL}"
- "--certificatesresolvers.resolver.acme.storage=/letsencrypt/acme.json"
- "--experimental.plugins.fail2ban.moduleName=github.com/tomMoulard/fail2ban"
- "--experimental.plugins.fail2ban.version=v0.7.1"
ports:
- "80:80"
- "443:443"
+15
View File
@@ -0,0 +1,15 @@
http:
middlewares:
fail2ban:
plugin:
fail2ban:
rules:
bantime: "3h"
findtime: "10m"
maxretry: 5
whitelist:
ip:
- "127.0.0.1/8"
- "10.0.0.0/8"
- "172.16.0.0/12"
- "192.168.0.0/16"