Afficher les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| 1 | = Fail2ban : protéger ses services contre les attaques = | ||
| 2 | |||
| 3 | {{toc/}} | ||
| 4 | |||
| 5 | Fail2ban est un outil permettant de protéger les services exposés (comme SSH, nginx ou postfix) contre les attaques répétées par force brute. Il fonctionne en analysant les fichiers de logs et en bannissant automatiquement les adresses IP qui présentent un comportement suspect. | ||
| 6 | |||
| 7 | == Fonctionnement == | ||
| 8 | |||
| 9 | Fail2ban surveille les logs (ex : `/var/log/auth.log`) à la recherche de motifs définis (échec d’authentification, erreurs). Lorsqu’une IP déclenche un certain nombre d’alertes dans un intervalle de temps, une règle temporaire est ajoutée au pare-feu pour bloquer cette IP. | ||
| 10 | |||
| 11 | == Installation == | ||
| 12 | |||
| 13 | === Debian/Ubuntu === | ||
| 14 | |||
| 15 | {{code language="bash"}} | ||
| 16 | sudo apt install fail2ban | ||
| 17 | {{/code}} | ||
| 18 | |||
| 19 | === Fedora/RHEL/AlmaLinux === | ||
| 20 | |||
| 21 | {{code language="bash"}} | ||
| 22 | sudo dnf install fail2ban | ||
| 23 | {{/code}} | ||
| 24 | |||
| 25 | == Configuration de base == | ||
| 26 | |||
| 27 | Le fichier principal est `/etc/fail2ban/jail.conf`, mais il est recommandé de le **copier vers `jail.local`** pour ne pas perdre la configuration lors d’une mise à jour. | ||
| 28 | |||
| 29 | {{code language="bash"}} | ||
| 30 | sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local | ||
| 31 | {{/code}} | ||
| 32 | |||
| 33 | == Exemple de configuration pour SSH == | ||
| 34 | |||
| 35 | Dans `/etc/fail2ban/jail.local` : | ||
| 36 | {{code language="ini"}}[sshd] | ||
| 37 | enabled = true | ||
| 38 | port = ssh | ||
| 39 | logpath = %(sshd_log)s | ||
| 40 | maxretry = 5 | ||
| 41 | bantime = 3600 | ||
| 42 | findtime = 600{{/code}} | ||
| 43 | |||
| 44 | - `maxretry` : nombre d’échecs avant bannissement | ||
| 45 | - `bantime` : durée du bannissement en secondes | ||
| 46 | - `findtime` : période pendant laquelle les échecs sont comptés | ||
| 47 | |||
| 48 | == Démarrer et activer le service == | ||
| 49 | |||
| 50 | {{code language="bash"}} | ||
| 51 | sudo systemctl enable fail2ban | ||
| 52 | sudo systemctl start fail2ban | ||
| 53 | {{/code}} | ||
| 54 | |||
| 55 | == Vérifier l’état et les IP bannies == | ||
| 56 | |||
| 57 | {{code language="bash"}} | ||
| 58 | sudo fail2ban-client status | ||
| 59 | sudo fail2ban-client status sshd | ||
| 60 | {{/code}} | ||
| 61 | |||
| 62 | == Débannir une IP manuellement == | ||
| 63 | |||
| 64 | {{code language="bash"}} | ||
| 65 | sudo fail2ban-client set sshd unbanip 192.168.1.50 | ||
| 66 | {{/code}} | ||
| 67 | |||
| 68 | == Étendre la protection à d’autres services == | ||
| 69 | |||
| 70 | Fail2ban peut protéger : | ||
| 71 | - `nginx` (accès interdits, erreurs 404 répétées) | ||
| 72 | - `postfix` (auth SMTP ratée) | ||
| 73 | - `nextcloud` (brute-force sur interface web) | ||
| 74 | - `sshd` (connexion SSH échouée) | ||
| 75 | |||
| 76 | Il suffit d’activer les sections correspondantes dans `jail.local` et de s'assurer que les logs sont bien renseignés. | ||
| 77 | |||
| 78 | == Logs et journalisation == | ||
| 79 | |||
| 80 | Les logs de fail2ban se trouvent ici : | ||
| 81 | {{code language="bash"}}/var/log/fail2ban.log{{/code}} | ||
| 82 | |||
| 83 | Et on peut aussi surveiller via : | ||
| 84 | {{code language="bash"}}journalctl -u fail2ban{{/code}} | ||
| 85 | |||
| 86 | == Liens utiles == | ||
| 87 | |||
| 88 | * [fail2ban.org](https://www.fail2ban.org/wiki/index.php/Main_Page) | ||
| 89 | * [Liste des filtres disponibles](https://github.com/fail2ban/fail2ban/tree/master/config/filter.d) | ||
| 90 | * [Surveillance automatique avec fail2web (UI)](https://github.com/Sean-Der/fail2web) | ||
| 91 | |||
| 92 | == Liens internes == | ||
| 93 | |||
| 94 | * [[Retour à la section Réseau & Sécurité>>doc:Wiki Batcave John.Main.TutosLinux.ReseauSecurite.WebHome]] | ||
| 95 | * [[Retour à la section TutoLinux>>doc:Wiki Batcave John.Main.TutosLinux.WebHome]] | ||
| 96 | * [[Retour à l’accueil>>doc:Wiki Batcave John.WebHome]] |