
À propos de ce guide
Ce guide étape par étape existe pour vous aider à installer et à configurer Fail2ban avec Docker sur votre serveur afin d’empêcher l’attaque de pirates (attaque par force brute SSH et WordPress login).
Nous avons discuté de la façon dont fail2ban fonctionne sur le post précédent.
Introduction
Fail2ban est installé dans le cadre de l’environnement hôte (Ubuntu), le conteneur reste indépendant. Cependant, pour interpréter les filtres, Fail2ban doit avoir accès aux fichiers journaux (logs) du conteneur, par exemple les logs du serveur web Nginx ou Apache2.
L’exemple suivant montre Fail2ban, Docker Host et Container sur un serveur Ubuntu avec iptables. Fail2ban doit surveiller et protéger les accès SSH au serveur Ubuntu et les accès HTTP au conteneur Docker.

Installez Fail2ban sur Ubuntu avec Docker
Il est très facile d’installer Fail2ban pour Ubuntu ou Debian.
sudo apt-get update sudo apt-get install fail2ban
Pour tester que l’installation c’est bien passer, tapez:
service fail2ban status
Configuration de Fail2ban pour empêcher l’attaque SSH brute force
Après l’installation, les accès SSH sont surveillés immédiatement après l’installation de Fail2ban. Le paramètre prêt à l’emploi est suffisant.
Mais il est recommandé d’autoriser une liste blanche de votre adresse IP ( IP white list ) et de modifier le temps d’interdiction par défaut. Donc, créez d’abord un nouveau fichier de configuration jail.local basé sur la configuration par défaut de jail.
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ensuite, modifions la configuration par défaut pour white listé notre adresse IP et changer le temps d’interdiction par défaut à une semaine ( 7 jours ).
Fail2ban Configuration pour bloquer les connexions par force brute sur WordPress login
Une nouvelle prison, un filtre et une action sont nécessaires pour surveiller l’accès HTTP du conteneur Docker.
Fail2ban prison (Jail)
Les filtres et l’action sont déclarer dans les options de la prison. Le fichier journal (logs) du conteneur Docker à surveiller se trouve sur l’hôte Docker sous « /var/lib/docker/containers/<CONTAINERID>/<CONTAINERID>-json.log »
Nous créons une nouvelle prison [wplogin] avec un filtre personnalisé et une action personnalisée
Fail2ban filtre
Le filtre peut contenir des expressions régulières pour détecter les entrées de journal malveillantes. A titre d’exemple, les attaques WordPress wp-login.php sont filtrées derrière la liste.
Créer un nouveau fichier pour le filtre: nano /etc/fail2ban/filter.d/wplogin.conf
Fail2ban action
Contrairement à l’action prête à l’emploi, « actionban » et « actionunban » n’affectent pas la chaîne INPUT, mais la chaîne docker FORWARD.
Créer un nouveau fichier pour l’action: nano /etc/fail2ban/action.d/docker-action.conf
service fail2ban restart fail2ban-client reload
Fail2ban Commandes utiles
Commandes
|
Description
|
---|---|
service fail2ban restart | redémarrez le service fail2ban (après la configuration d’édition) |
ail2ban-client reload | redémarrez fail2ban client |
fail2ban-client status | obtenir la liste des prisons activé |
fail2ban-client status <JAIL> example: fail2ban-client status wplogin example: fail2ban-client status sshd |
obtenir le statut <JAIL> (le nombre de tentatives infructueuses et la liste des adresses IP interdites) |
fail2ban-regex /var/lib/docker/containers/<CONTAINERID>/<CONTAINERID>-json.log /etc/fail2ban/filter.d/wplogin.conf | tester une regex, exemple wplogin |
fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf | tester une regex, exemple sshd |
fail2ban-regex « line » « failregex » | tester une regex |
fail2ban-client set <JAIL-NAME> unbanip <IP-ADDRESS> | Autoriser manuellement l’adresse IP |
fail2ban-client set <JAIL-NAME> banip <IP-ADDRESS> | Bloquer manuellement l’adresse IP |
tail -f /var/log/fail2ban.log | voir les journaux de fail2ban |
iptables -L –line-numbers | liste des IP bloquée avec des numéros de ligne |
iptables -D <Jail-Name> -s <IP-ADDRESS> -j DROP Example: Jail-Name =f2b-wplogin Jail-Name =f2b-sshd |
Autoriser manuellement l’adresse IP |
fail2ban-server -b | démarrer le serveur fail2ban |
docker inspect –format='{{.LogPath}}’ $INSTANCE_ID | retourner le chemin du fichier journal de l’instance |
Conclusion
L’installation et la configuration sont terminées. Fail2ban et Docker fonctionnent bien