Pare-feu : Fail2ban, installation
Fail2ban surveille les journaux et bannit temporairement les adresses qui multiplient les échecs (mots de passe SSH erronés, scans web). UFW fixe les ports ouverts, Fail2ban ferme l’accès aux adresses abusives.
Principe
Section intitulée « Principe »| Notion | Rôle |
|---|---|
| Filtre | Expressions régulières qui repèrent un échec (/etc/fail2ban/filter.d/) |
| Jail | Filtre + journal à surveiller + règles de bannissement |
| Action | Ce qui est fait pour bannir (/etc/fail2ban/action.d/) |
Une adresse qui produit maxretry échecs en moins de findtime est bannie pendant bantime.
Versions
Section intitulée « Versions »| Ubuntu | Fail2ban |
|---|---|
| 24.04 | 1.0.2 |
| 26.04 | 1.1.0 |
Installer
Section intitulée « Installer »sudo apt updatesudo apt install fail2bansudo systemctl enable --now fail2bansudo fail2ban-client statusSur Ubuntu, la jail sshd est active par défaut (/etc/fail2ban/jail.d/defaults-debian.conf, lecture du journal systemd).
Fichiers
Section intitulée « Fichiers »| Fichier | Rôle |
|---|---|
/etc/fail2ban/jail.conf |
Réglages d’origine, à ne pas modifier |
/etc/fail2ban/jail.local |
Réglages locaux, prioritaires |
/etc/fail2ban/jail.d/*.local |
Un fichier par jail |
/etc/fail2ban/filter.d/ |
Filtres |
/var/log/fail2ban.log |
Bannissements et débannissements |
Un jail.local de départ
Section intitulée « Un jail.local de départ »sudo tee /etc/fail2ban/jail.local <<'CONF'[DEFAULT]bantime = 1hfindtime = 10mmaxretry = 5ignoreip = 127.0.0.1/8 ::1 203.0.113.10
[sshd]enabled = truemaxretry = 3CONFsudo systemctl restart fail2bansudo fail2ban-client status sshd| Réglage | Signification |
|---|---|
bantime |
Durée du bannissement (10m, 1h, 1d, 1w ; -1 : définitif) |
findtime |
Fenêtre d’observation |
maxretry |
Échecs tolérés dans la fenêtre |
ignoreip |
Adresses jamais bannies |
Bannissement progressif
Section intitulée « Bannissement progressif »[DEFAULT]bantime.increment = truebantime.factor = 2bantime.maxtime = 4wChaque récidive d’une même adresse double la durée, jusqu’à 4 semaines.
Action de bannissement
Section intitulée « Action de bannissement »Sur Ubuntu, l’action par défaut est nftables : Fail2ban crée la table f2b-table.
sudo nft list table inet f2b-tableLa règle est évaluée avant celles d’UFW : les deux cohabitent. La connexion de l’adresse bannie est refusée immédiatement (Connection refused).
Depuis une autre machine, avec un mauvais mot de passe :
for i in 1 2 3 4; do ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no faux@serveur.exemple.com; doneSur le serveur :
sudo fail2ban-client status sshdsudo tail -f /var/log/fail2ban.log|- Filter| |- Currently failed: 0| |- Total failed: 4`- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 203.0.113.9Commandes fail2ban-client
Section intitulée « Commandes fail2ban-client »| Commande | Rôle |
|---|---|
sudo fail2ban-client status |
Liste des jails |
sudo fail2ban-client status sshd |
Détail d’une jail |
sudo fail2ban-client set sshd banip 203.0.113.9 |
Bannit à la main |
sudo fail2ban-client set sshd unbanip 203.0.113.9 |
Débannit |
sudo fail2ban-client unban --all |
Débannit tout |
sudo fail2ban-client get sshd maxretry |
Lit un réglage |
sudo fail2ban-client set sshd bantime 2h |
Modifie à chaud (perdu au redémarrage) |
sudo fail2ban-client reload |
Recharge la configuration |
sudo fail2ban-client -d |
Affiche la configuration lue |
Se débannir
Section intitulée « Se débannir »Depuis la console de l’hébergeur ou une autre adresse :
sudo fail2ban-client set sshd unbanip 203.0.113.9Ajouter ensuite l’adresse à ignoreip.
Dépannage
Section intitulée « Dépannage »| Symptôme | Piste |
|---|---|
| Aucun bannissement lors de tests locaux | ignoreself ou ignoreip |
Total failed reste à 0 |
Mauvais filtre ou journal : sudo fail2ban-regex systemd-journal sshd |
| La jail ne démarre pas | sudo fail2ban-client -d et sudo journalctl -u fail2ban -n 50 |
Adresse encore bannie après unbanip |
Autre jail : fail2ban-client status puis chaque jail |
Ubuntu 24.04 et 26.04 : différences à connaître
Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »Le fonctionnement est le même sur Fail2ban 1.0.2 et 1.1.0. OpenSSH 10 (26.04) journalise sous sshd-session : le filtre sshd de Fail2ban 1.1.0 le prend en charge.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Manuel :
man jail.conf,man fail2ban-client - Suite : Fail2ban : jails et filtres