Je suis intéressé par la configuration de fail2ban avec mon déploiement Traefik. J'ai trouvé un Gist qui contient des extraits , mais je ne sais pas comment les utiliser. Quelqu'un peut-il remplir les blancs s'il vous plaît? Ou, existe-t-il un meilleur moyen de mettre en œuvre la sécurité de style fail2ban avec Traefik?
J'ai pu accomplir cela en commençant par le Gist que vous avez publié. C'est sous l'hypothèse que Traefik fonctionne déjà, que vous souhaitez bloquer les adresses IP qui ont des échecs d'authentification HTTP de base et les interdire avec iptables. Il y a quelques morceaux alors permettez-moi de commencer par les configurations de conteneurs:
version: '2'
services:
traefik:
image: traefik:Alpine
volumes:
- /apps/docker/traefik/traefik.toml:/traefik.toml:ro
- /apps/docker/traefik/acme:/etc/traefik/acme
- /var/log/traefik:/var/log
ports:
- 8080:8080/tcp
- 80:80/tcp
- 443:443/tcp
command:
- --web
- --accessLog.filePath=/var/log/access.log
- --accessLog.filters.statusCodes=400-499
Vous pouvez voir ici que j'écris le fichier journal dans /var/log/access.log
et obtenir uniquement les codes d'accès à 400-499
. Je monte ensuite ce fichier sur mon hôte /var/log/traefik:/var/log
Maintenant, pour la partie fail2ban, j'utilise un conteneur docker fail2ban plutôt que d'installer sur mon hôte, mais vous pouvez techniquement le faire là aussi.
version: '2'
services:
fail2ban:
image: crazymax/fail2ban:latest
network_mode: "Host"
cap_add:
- NET_ADMIN
- NET_RAW
volumes:
- /var/log:/var/log:ro
- /apps/docker/fail2ban/data:/data
Vous pouvez voir que je monte le /var/log
répertoire dans le conteneur fail2ban en lecture seule.
Le /apps/docker/fail2ban/data/jail.d/traefik.conf
le fichier contient:
[traefik-auth]
enabled = true
logpath = /var/log/traefik/access.log
port = http,https
Le /apps/docker/fail2ban/data/filter.d/traefik-auth.conf
le fichier contient:
[Definition]
failregex = ^<Host> \- \S+ \[\] \"(GET|POST|HEAD) .+\" 401 .+$
ignoreregex =
L'action d'interdiction par défaut consiste à interdire via iptables. Si vous voulez changer cela, vous pouvez changer le banaction
par défaut dans le traefik.conf
, par exemple:
[DEFAULT]
banaction = cloudflare
[traefik-auth]
enabled = true
logpath = /var/log/traefik/access.log
port = http,https
Les actions sont ici: https://github.com/fail2ban/fail2ban/tree/0.11/config/action.d
Si vous devez en modifier un, copiez le fichier dans le /apps/docker/fail2ban/data/action.d
répertoire et redémarrez le conteneur.