Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| fail2ban [Le 25/09/2018, 13:06] – [Configurer les actions] typo bruno | fail2ban [Le 10/01/2026, 19:50] (Version actuelle) – [Configuration] le dump de la configuration n'apporte rien sauf pour débogage 78.196.241.242 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| {{tag> | {{tag> | ||
| - | ---- | ||
| ====== Bannir des IP avec fail2ban ====== | ====== Bannir des IP avec fail2ban ====== | ||
| {{ : | {{ : | ||
| - | **fail2ban** est une application qui analyse les logs de divers services (SSH, Apache, FTP...) | + | **fail2ban** est une application qui analyse les logs de divers services (SSH, Apache, FTP...) |
| ===== Installation ===== | ===== Installation ===== | ||
| [[tutoriel: | [[tutoriel: | ||
| + | Il convient ensuite de lancer le service fail2ban | ||
| + | < | ||
| + | |||
| + | puis d'en créer le démarrage automatique | ||
| + | < | ||
| + | |||
| + | Et enfin de contrôler la bonne installation | ||
| + | < | ||
| + | |||
| + | Si la réponse comporte du rouge et le mot " | ||
| + | |||
| + | Si la réponse comporte du vert et les mots " | ||
| ===== Configuration ===== | ===== Configuration ===== | ||
| - | <note important> | + | <note important> |
| + | Les tutoriels utilisent souvent, à tort, le fichier **/ | ||
| + | |||
| ==== Généralités ==== | ==== Généralités ==== | ||
| - | **Fail2ban | + | **Fail2ban |
| Un serveur avec un accès SSH sur le port standard, par exemple, recevra très rapidement des centaines, voire des milliers de tentatives de connexions provenant de différentes machines. Ce sont généralement des attaques par force brute lancées par des robots.\\ | Un serveur avec un accès SSH sur le port standard, par exemple, recevra très rapidement des centaines, voire des milliers de tentatives de connexions provenant de différentes machines. Ce sont généralement des attaques par force brute lancées par des robots.\\ | ||
| Fail2ban en analysant les logs permet de bannir les IP au bout d'un certain nombre de tentatives ce qui limitera le remplissage des logs et l' | Fail2ban en analysant les logs permet de bannir les IP au bout d'un certain nombre de tentatives ce qui limitera le remplissage des logs et l' | ||
| + | Ceci va également rendre les attaques par force brute ou par dictionnaire beaucoup plus longues mais ce n'est pas une sécurité absolue contre ce type d' | ||
| + | |||
| **Mais cela n' | **Mais cela n' | ||
| - | Autrement dit, utilisez votre temps de travail pour analyser vos configurations et sécuriser vos services plutôt que d'' | + | Autrement dit, utilisez votre temps de travail pour analyser vos configurations et sécuriser vos services plutôt que d' |
| ==== Paramétrage par défaut ==== | ==== Paramétrage par défaut ==== | ||
| Ligne 25: | Ligne 41: | ||
| Les paramètres par défaut sont visibles dans le fichier **/ | Les paramètres par défaut sont visibles dans le fichier **/ | ||
| - | La durée de bannissement d'une IP est définie par la directive **bantime** avec une valeur en secondes. La valeur par défaut de 600 s (10 minutes est beaucoup trop faible). Il est plus réaliste d' | + | La durée de bannissement d'une IP est définie par la directive **bantime** avec une valeur en secondes. La valeur par défaut |
| Une autre directive importante est **findtime** qui définit en secondes le temps depuis lequel une anomalie est recherchée dans les logs. Il ne faut pas mettre une valeur trop élevée (1 heure suffit) sans quoi la quantité de logs à analyser pourrait devenir très importante et donc avoir un impact sur les performances. | Une autre directive importante est **findtime** qui définit en secondes le temps depuis lequel une anomalie est recherchée dans les logs. Il ne faut pas mettre une valeur trop élevée (1 heure suffit) sans quoi la quantité de logs à analyser pourrait devenir très importante et donc avoir un impact sur les performances. | ||
| Ligne 31: | Ligne 47: | ||
| La directive **ignoreip** permet de définir la liste des IP à ignorer. Il est utile d'y mettre sa propre IP afin de ne pas risquer de se faire bannir. | La directive **ignoreip** permet de définir la liste des IP à ignorer. Il est utile d'y mettre sa propre IP afin de ne pas risquer de se faire bannir. | ||
| - | Il faut créer le fichier dans **/ | + | Il faut créer le fichier dans **/ |
| < | < | ||
| ignoreip = 127.0.0.1 124.32.5.48 | ignoreip = 127.0.0.1 124.32.5.48 | ||
| - | findtime = 3600 | + | findtime = 10m |
| - | bantime = 86400 | + | bantime = 24h |
| maxretry = 3</ | maxretry = 3</ | ||
| * ignoreip ⇒ votre IP (ici 124.32.5.48) en plus de l' | * ignoreip ⇒ votre IP (ici 124.32.5.48) en plus de l' | ||
| - | | + | * findtime = 10m (10 minutes), |
| - | | + | * bantime = 24h (24 heures) ou 86400 secondes |
| - | * maxretry = 3 ⇒ une IP sera bannie après 3 tentatives de connexion avortées. | + | * maxretry = 3 (une IP sera bannie après 3 tentatives de connexion avortées). |
| ==== Configurer fail2ban pour les services actifs ==== | ==== Configurer fail2ban pour les services actifs ==== | ||
| - | Pour spécifier à **fail2ban** quels services il doit surveiller, il faut activer les « jails » (prisons) | + | Pour spécifier à **fail2ban** quels services il doit surveiller, il faut activer les « jails » (prisons) |
| Si vous regardez le fichier **/ | Si vous regardez le fichier **/ | ||
| Ligne 57: | Ligne 73: | ||
| </ | </ | ||
| Il indique : | Il indique : | ||
| - | * **port** = les ports à bloquer | + | * **port** = les ports à bloquer |
| - | * **logpath** = l' | + | * **logpath** = l' |
| * **backend** = le moteur de surveillance des logs. | * **backend** = le moteur de surveillance des logs. | ||
| Les valeurs représentées ainsi **%(sshd_logs)s** sont des variables qui sont définies dans d' | Les valeurs représentées ainsi **%(sshd_logs)s** sont des variables qui sont définies dans d' | ||
| - | Pour activer la surveillance des connexion SSH, il suffit d' | + | Pour activer la surveillance des connexion SSH, il suffit d' |
| - | <file - / | + | <file - / |
| [sshd] | [sshd] | ||
| enabled = true | enabled = true | ||
| Ligne 73: | Ligne 89: | ||
| Si vous avez besoin de spécifier un port (par exemple, quand SSH n'est pas en écoute sur un port standard, un fichier de log particulier, | Si vous avez besoin de spécifier un port (par exemple, quand SSH n'est pas en écoute sur un port standard, un fichier de log particulier, | ||
| - | <file - / | + | <file - / |
| [sshd] | [sshd] | ||
| enabled = true | enabled = true | ||
| Ligne 101: | Ligne 117: | ||
| </ | </ | ||
| - | Pour plus d' | + | Pour plus d' |
| ==== Vérifier le bon fonctionnement de votre configuration Fail2Ban | ==== Vérifier le bon fonctionnement de votre configuration Fail2Ban | ||
| Ligne 109: | Ligne 125: | ||
| Attention ! Pensez à régler la valeur de **bantime** sur un temps assez court si vous faites ce genre d’essais afin de pouvoir vous reconnecter à votre serveur. | Attention ! Pensez à régler la valeur de **bantime** sur un temps assez court si vous faites ce genre d’essais afin de pouvoir vous reconnecter à votre serveur. | ||
| - | Côté serveur vous pouvez également surveiller ce qu'il se passe avec la commande | + | Côté serveur vous pouvez également surveiller ce qu'il se passe avec la commande |
| < | < | ||
| - | qui dans ce cas vous retournera le statut de la prison | + | qui dans ce cas vous retournera le statut de la prison |
| Si vous utilisez un service sujet à de nombreuses attaques par force brute, comme sshd sur le port standard 22, vous devriez très rapidement voir les premiers bannissements. | Si vous utilisez un service sujet à de nombreuses attaques par force brute, comme sshd sur le port standard 22, vous devriez très rapidement voir les premiers bannissements. | ||
| Ligne 128: | Ligne 144: | ||
| Il est possible de recevoir un courriel après chaque bannissement d'une adresse IP.\\ | Il est possible de recevoir un courriel après chaque bannissement d'une adresse IP.\\ | ||
| - | Pour cela vous pouvez définir globalement l' | + | Pour cela vous pouvez définir globalement l' |
| < | < | ||
| Il faut que le système soit correctement configuré pour l' | Il faut que le système soit correctement configuré pour l' | ||
| Ligne 136: | Ligne 152: | ||
| Pour voir les messages locaux (si vous avez laissé une adresse e-mail du type @localhost), | Pour voir les messages locaux (si vous avez laissé une adresse e-mail du type @localhost), | ||
| - | **Pour activer l' | + | **Pour activer l' |
| < | < | ||
| Ligne 147: | Ligne 163: | ||
| < | < | ||
| - | Des informations complémentaires sont disponibles sur le site officiel de Fail2ban : | + | Des informations complémentaires sont disponibles sur le site officiel de Fail2ban : |
| [[http:// | [[http:// | ||
| Ligne 168: | Ligne 184: | ||
| ==== Tester les filtres ==== | ==== Tester les filtres ==== | ||
| - | Si vous avez crée vos propres filtres, | + | Si vous avez créé |
| - | Par exemple pour teste le filtre apache-badbots sur le fichier journal d' | + | Par exemple, pour tester |
| < | < | ||
| + | ===== Gestion du bannissement ===== | ||
| + | :-) Il est possible de spécifier une plage d' | ||
| + | ==== Voir le status des jails ==== | ||
| + | Pour savoir si votre jail est actif, vous devriez le voir affiché, après avoir taper cette commande : | ||
| + | < | ||
| + | //Cette commande affiche tous les jails que fail2ban traite.// | ||
| + | |||
| + | |||
| + | Pour savoir si une de vos jails de votre fail2ban a bannis une ou plusieurs IP, taper cette commande : | ||
| + | < | ||
| + | //Cette commande va afficher le nombre de tentative lu dans vos logs, le nombre de bannis et, le plus intéressant, | ||
| + | |||
| + | ==== Dé-bannir une IP de l'un de vos jails ==== | ||
| + | Une de vos adresse IP se retrouve blacklisté suite à une mauvaise manips répété ou un test de sécurité. Vous pouvez le retirer de la liste des IP blacklisté de fail2ban avec cette commande : | ||
| + | < | ||
| + | |||
| + | ==== Bannir manuellement une IP sur l'un de vos jails ==== | ||
| + | Vous voulez tester plus rapidement l' | ||
| + | < | ||
| + | <note important> | ||
| ===== Alternatives à fail2ban ===== | ===== Alternatives à fail2ban ===== | ||
| - | * [[https://yalis.fr/ | + | * [[https://www.sshguard.net/|SSHGuard]] est une alternative à Fail2ban présent dans les dépôts Ubuntu |
| - | * [[https:// | + | * [[https:// |
| ===== Ressources ===== | ===== Ressources ===== | ||
| * (en) [[https:// | * (en) [[https:// | ||
| - | * (en) [[http://www.fail2ban.org/wiki/index.php/ | + | * (en) [[https://github.com/ |
| + | * (fr) [[https:// | ||
| + | ---- | ||
| - | --- // | + | //Contributeurs : [[: |
