fail2ban est un package de fichiers client, serveur et de configuration utilisé pour protéger le système contre diverses attaques malveillantes. Il sécurise également les services du serveur Linux contre le déni de service (DoS). Tandis que les autres fonctions de base sont la surveillance des fichiers journaux, la recherche de modèles prédéfinis et le blocage temporaire des adresses IP. Il est publié sous la licence publique générale GNU version 2 et est basé sur Python.
Il peut fonctionner en arrière-plan (comme un démon) ainsi qu'au premier plan. Le programme est utile, par exemple, dans le serveur ssh, vous souhaitez limiter le nombre de tentatives de connexion. Le programme fail2ban examine les fichiers journaux du système à la recherche d'échecs de connexion, puis bloque l'adresse Internet (IP) de l'attaquant pendant un certain temps.
Ici, nous apprenons les étapes pour installer Fail2ban sur Debian 11 Bulleyes et son processus de configuration.
Installation de Fail2ban sur Debian 11
Les packages pour installer et configurer le Fail2ban sont disponibles dans le dépôt officiel Debian 11, il suffit donc d'utiliser la commande apt pour son installation.
Tout d'abord, exécutez la commande de mise à jour pour reconstruire le cache du référentiel-
sudo apt update
Et puis la commande principale pour obtenir cet outil de sécurité-
sudo apt install fail2ban
Avec l'exécution de la commande ci-dessus, les programmes suivants seront disponibles après l'installation :
- fail2ban-server – le serveur
- fail2ban-client – Programme client pour la configuration et l'évaluation du serveur
- fail2ban-regex- Programme pour tester les expressions régulières
Activer et vérifier l'état de ses services-
sudo systemctl enable fail2ban sudo systemctl status fail2ban
Configuration sur Debian 10/11
fail2ban lit les types de fichiers de configuration avec les extensions .conf
et .local
. Fichiers avec l'extension .conf
sont créés lors de l'installation et seront écrasés lors d'une mise à niveau du package, donc toutes les modifications doivent être faites dans le .local
correspondant des dossiers. Ainsi, ajoutez ou modifiez uniquement les valeurs de ce fichier qui sont différentes des paramètres par défaut ou globaux.
Fail2ban a trois types de fichiers de configuration :
/etc/fail2ban/action.d/*.conf/*
/etc/fail2ban/filter.d/*.conf/*
/etc/fail2ban/jail.conf /etc/fail2ban/jail.d/*.conf
Actions.d
Les fichiers du répertoire /etc/fail2ban/action.d/ contiennent les commandes pour (débloquer) les adresses IP. Les fichiers d'action contiennent deux sections : [Definition]
et [Init]
. Les entrées dans [Init]
section est utilisée pour écraser les règles définies dans la prison. Les exemples du tableau suivant sont tirés de iptables-multiport-conf action. Toutes les commandes sont exécutées avec les droits d'utilisateur fail2ban.
Aperçu des options | ||
entrée | description | exemple |
[Definition] | ||
actionstart | Commandes exécutées au démarrage de fail2ban. | actionstart = iptables -N fail2ban-<name> iptables -A fail2ban-<name> -j RETURN iptables -I <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name> |
actionstop | Commandes exécutées lors de la sortie de fail2ban. | actionstop = iptables -D <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name> iptables -F fail2ban-<name>[[BR]]iptables -X fail2ban-<name> |
actioncheck | Commandes exécutées avant chaque actionban. Ceux-ci sont utilisés pour vérifier la fonctionnalité de l'environnement actuel. | actioncheck = iptables -n -L <chain> | grep -q 'fail2ban-<name>[ \t]' |
actionban | Commandes exécutées lorsqu'une IP est bannie. La condition est toujours maxretry doit être dépassé et findtime tombé à court de. | actionban = iptables -I fail2ban-<name> 1 -s <ip> -j <blocktype> |
actionunban | Commandes à utiliser pour débannir. | actionunban = iptables -D fail2ban-<name> -s <ip> -j <blocktype> |
[Init] | ||
name | Le nom par défaut de la chaîne | name = default |
port | port | port = ssh |
protocol | Est utilisé en interne par le lecteur de configuration. Valeurs possibles : tcp , udp , icmp , all . | protocol = tcp |
chain | La chaîne iptables à laquelle les règles fail2ban doivent être ajoutées. La norme est INPUT . | chaîne =INPUT |
Balises d'action | Les balises d'action sont des espaces réservés qui peuvent être utilisés dans actionban , actionunban et actioncheck . | |
ip | L'adresse IPv4 à bannir. | |
failures | Le nombre de tentatives infructueuses compté. | |
time | L'horodatage Unix (secondes) de l'interdiction. | |
matches | Les entrées chaînées des lignes du fichier journal qui ont conduit au bannissement. De nombreux caractères shell sont échappés. |
Filtre.d
Les fichiers du répertoire /etc/fail2ban/filter.d/ contient les expressions régulières pour analyser les fichiers journaux et pour extraire l'adresse IP ou si usedns est utilisé, le nom d'hôte. Il n'y a que deux sections dans ces fichiers : [Definition]
et [Includes]
. Ce dernier peut être utilisé pour lire dans d'autres fichiers de configuration.
Les exemples du tableau suivant sont tirés de iptables-multiport-conf action. Toutes les commandes sont exécutées avec les droits d'utilisateur fail2ban.
Aperçu des options | ||
entrée | description | exemple |
[Definition] | ||
failregex | A l'aide de cette expression régulière, les fichiers journaux sont recherchés pour les résultats. La balise est HOST disponible ici,qui est utilisé dans le cadre de la regex et contient le nom d'hôte ou l'adresse IP. La distinction entre l'adresse IP et le nom d'hôte est déterminée automatiquement par fail2ban. | failregex =^%(__prefix_line)sFAIL :\S+ adresse de= ^%(__prefix_line)sFAIL :\S+ libwrap from= |
ignoreregex | Des exceptions peuvent être définies ici, même si elles étaient valides pour le failregex ci-dessus. ignoreregex prend en charge l'interpolation de chaîne afin que vous puissiez utiliser vos propres variables avec %(variablenname)s . | ignoreregex = |
[INCLUDES] | ||
before | Utiliser pour faire en sorte qu'un fichier soit lu avant celui défini. Un exemple est common.conf | avant =common.conf |
after | Le fichier est lu après celui défini | après =example_after.local |
exemple | Après avoir intégré le common.conf est _daemon disponible.Voir /etc/fail2ban/filter.d/common.conf pour plus de détails. | _daemon =xinetd |
Jail.conf
Alors que le jail.conf
le fichier combine des actions et créé un filtre dans une prison. L'utilisateur doit enregistrer ce fichier avec l'extension .loca
l pour commencer à ajouter ses propres règles ou à les personnaliser.
Le jail.conf et le tableau suivant donne un aperçu des valeurs possibles par défaut.
Aperçu des options | ||
entrée | description | exemple |
[DEFAULT] | ||
ignoreip | Liste des adresses IP ou des réseaux à ignorer, séparés par des espaces. | ignoreip = 127.0.0.1/8 192.168.1.33 |
bantime | Temps d'interdiction en secondes. Une valeur négative est un ban permanent. | bantime = 86400 |
findtime | Le nombre de secondes après lesquelles le compteur de maxretry est réinitialiser. | findtime = 660 |
maxretry | Le nombre maximum de tentatives infructueuses avant que fail2ban bannisse l'IP. | maxretry = 2 |
backend | Le backend, tel que systemd, peut être défini ici. La valeur par défaut est auto (recommandé). | backend = systemd |
usedns | Paramètre pour le comportement de recherche inversée de fail2ban. Les valeurs possibles sont yes , no et warn .Ce dernier signifie que les entrées avec des noms d'hôte donnent un avertissement dans le fichier journal, ce qui peut entraîner un grand nombre d'entrées. | usedns = warn |
[myJail] | Le nom de la prison peut être attribué ici. | [ssh] |
enabled | (Dé-) active la prison | enabled = true |
port | Définition du port, peut être numérique. Les valeurs multiples sont séparées par des virgules. | port = ssh |
filter = sshd | Nom du fichier filtre | /etc/fail2ban/filter.d/sshd.conf |
logpath | Le fichier journal à surveiller, qui est vérifié pour le filtre. | logpath = /var/log/auth.log |
maxretry, bantime,... | Des valeurs différentes pour les options par défaut peuvent également être définies. | maxretry = 3 |
Créez votre propre fichier de configuration Jail
Ainsi, copions maintenant le jail.conf fichier pour créer un jail.local fichier pour ajouter tous les paramètres personnalisés qui y resteront même après la mise à niveau de fail2ban.
sudo cp /etc/fail2ban/jail.{conf,local}
Pour configurer divers paramètres, modifiez les fichiers jail locaux créés
sudo nano /etc/fail2ban/jail.local
Quelques exemples-
Mettre en liste blanche certaines adresses IP, plages d'adresses IP ou hôtes
Maintenant, lorsque le fichier s'ouvre, disons que vous souhaitez mettre sur liste blanche certaines adresses IP, plages d'adresses IP ou hôtes pour qu'ils ne soient pas bloqués par le service File2ban. Pour cela, nous définissons la même chose dans le nouveau Jail.local fichier.
Voir :Comment vérifier l'adresse IP sur le terminal de commande Linux
Dans le fichier, recherchez le #igonreip ligne et supprimez le # à partir de cela. Après cela, ajoutez l'adresse IP ou la plage que vous souhaitez ajouter à la liste blanche.
Bantime, findtime et maxretry
De même, nous pouvons également augmenter ou diminuer le temps d'interdiction de l'adresse IP en modifiant les valeurs de l'option bantime indiquées dans le fichier.
[Default] bantime = 10m
Pour réduire ou augmenter la période de temps, changez simplement les 10 minutes par défaut en ce que vous voulez. Alors que pour bloquer l'adresse IP de manière permanente, utilisez une valeur négative.
maxretry
Combien de tentatives maximales une adresse IP doit-elle avoir effectuées pour être bloquée ? Par défaut, il est de cinq et déclaré en utilisant le maxretry
option dans jail.local
dossier. Si vous voulez le réduire, disons seulement après deux tentatives malveillantes, l'adresse IP devrait être bloquée, puis changez le nombre de 5 à 2. De la même manière, vous pouvez également augmenter le nombre d'essais maximum.
maxretry = 5
trouver le temps
C'est le temps entre la tentative maximale qui devrait se produire pour tout malware ou connexion sur le système avant que Fail2Ban ne bloque l'adresse IP particulière. Par exemple , quelqu'un essaie de se connecter, s'il a fait 5 tentatives en 10 minutes, son adresse IP est bloquée. Cependant, vous pouvez modifier le findtime valeur pour augmenter ou diminuer cette période de temps.
findtime = 10m
Fail2ban peut envoyer des alertes par e-mail
Oui, si certaines adresses IP sont interdites, vous pouvez recevoir la notification par courrier électronique pour la même chose. Cependant, vous devez activer et définir l'adresse e-mail que vous souhaitez utiliser pour recevoir la notification.
Installer Sendmail- Un agent de transfert de courrier (MTA) open source
sudo apt install sendmail
Maintenant, il y a deux paramètres clés que nous devons effectuer dans le jail.local fichier pour recevoir une notification par e-mail.
- dégagement – adresse e-mail qui sera utilisée pour recevoir une notification.
- expéditeur – adresse e-mail à partir de laquelle fail2ban enverra les e-mails.
Donc, dans le fichier, recherchez les deux paramètres ci-dessus et ajoutez votre adresse e-mail-
Ensuite, recherchez la ligne ci-dessous
action = %(action_)s
Et changez-le avec l'un des suivants-
action = %(action_)s
– Celui-ci enverra une notification par e-mail lorsqu'une adresse IP sera bannie.
ou
action = %(action_mwl)s
– Si vous souhaitez recevoir une notification par e-mail pour l'adresse IP de l'hôte banni, y compris les informations de journalisation, utilisez cette option d'action.
De plus, vous pouvez consulter notre liste des meilleures applications client de messagerie pour Ubuntu ou Debian Linux.
Activer les services dans le fichier de prison Fail2ban
Comme je l'ai mentionné plus tôt, cela crée jail.local comprend les deux Actions et Filtres qui peut être utilisé pour désactiver/activer les services autorisés par défaut ou créer les vôtres.
Par exemple – Par défaut, SSH est activé dans Jail.local de Fail2ban.
En fait, dans le fichier Fail2ban Jail, vous verrez qu'il y a beaucoup de services qui l'accompagnent. Cependant, vous devez les activer pour les utiliser. OU bien vous pouvez créer le vôtre.
Sous /etc/fail2ban/filters.d dossier, vous pouvez voir toute la configuration filter fichiers pour chaque service Fai2ban Jail disponible ici.
Avant de montrer comment les activer, vérifions quels sont les services jails activés-
sudo fail2ban-client status
La sortie sera comme ceci-
Status |- Number of jail: 1 `- Jail list: sshd
Maintenant, si nous voulons activer un service Jail, nous devons ajouter enabled = true
dans le jail.conf
fichier après le titre de service pénitentiaire. L'exemple suivant montre comment activer le apache-auth prison :
Exemple :Activons le service Fail2ban Apache-auth
Modifier jail.local
et trouvez Apache-Auth prédéfini Service pénitentiaire
Enregistrer le fichier en utilisant Ctrl+X , O, et en appuyant sur Entrée Clé.
Redémarrer le serveur Fail2ban
sudo systemctl restart fail2ban
Maintenant , utilisez à nouveau leclient Fail2ban pour vérifier combien de services Jail sont activés-
sudo fail2ban-client status
Cette fois, la sortie sera-
Status |- Number of jail: 2 `- Jail list: apache-auth, sshd
Pour en savoir plus à propos du service, utilisez son nom avec la commande ci-dessus-
sudo fail2ban-client status apache-auth
Sortie :
Status for the jail: apache-auth |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/apache2/error.log `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list:
Erreur :
Si vous obtenez les erreurs suivantes, cela signifie que le service particulier que vous souhaitez activer n'est pas encore installé sur votre système ou votre serveur. Par exemple, Si j'ai activé Apache Jail mais qu'Apache lui-même n'est pas disponible sur mon serveur, ce type d'erreur apparaîtra.
fail2ban.service: Main process exited, code=exited, status=255/EXCEPTION [6613]: ERROR Failed to access socket path: /var/run/fail2ban/fail2ban.sock. Is fail2ban running?
Utilisation du client Fail2ban
Même nous pouvons utiliser l'outil de commande client de Fail2ban pour gérer ses différents services- pour voir toutes les commandes qui s'y rapportent, vous pouvez utiliser l'indicateur d'aide-
fail2ban-client -h
Par exemple pour interdire ou débannir une adresse IP pour un service, utilisez la syntaxe suivante
À interdire
fail2ban-client set <JAIL-service> banip <IP>
Pour débannir
fail2ban-client set <JAIL-service> unbanip <IP>
Exemple-
sudo fail2ban-client set sshd banip 192.168.0.6
Note de fin-
Voici donc un aperçu rapide de l'installation et de la configuration de Fail2ban sur Debian 11 Bullseye ou 10 Buster. Bien que la documentation de l'outil Fail2ban ne soit pas vaste, si certains veulent regarder, consultez son site officiel. Voici les liens :page du projet, documentation, page GitHub pour le code source