Installez et configurez Fail2ban avec Docker

English English

À 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.

fail2ban docker iptables
fail2ban docker iptables

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

Après la reconfiguration, Fail2ban doit être démarré. Ensuite, la nouvelle prison est prise en compte et le conteneur Docker est protégé.
service fail2ban restart 
fail2ban-client reload

Fail2ban Commandes utiles

Commandes
Description
service fail2ban restartredémarrez le service fail2ban (après la configuration d’édition)
ail2ban-client reloadredémarrez fail2ban client
fail2ban-client statusobtenir 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.conftester une regex, exemple wplogin
fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conftester 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.logvoir les journaux de fail2ban
iptables -L –line-numbersliste 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 -bdémarrer le serveur fail2ban
docker inspect –format='{{.LogPath}}’ $INSTANCE_IDretourner le chemin du fichier journal de l’instance

Conclusion

L’installation et la configuration sont terminées. Fail2ban et Docker fonctionnent bien (grand sourire) (grand sourire)