Fail2ban-client : utiliser la commande pour administrer fail2ban avec des exemples

Fail2ban-client est une commande incluse dans le paquet fail2ban afin de gérer ce dernier.
Vous pouvez bannir, débannir une adresse IP, vérifiez le fonctionnement d'un jail/prisons et bien d'autres actions.

Dans ce tutoriel, nous allons voir les principales utilisations de la commande fail2ban-client avec des exemples.

Fail2ban-client : utiliser la commande pour administrer fail2ban avec des exemples

Fail2ban-client : utiliser la commande pour administrer fail2ban

Lister les prisons

Tout d'abord, vous pouvez afficher la liste des jails de fail2ban avec Fail2ban avec l'option status :

sudo fail2ban-client status

Status
|- Number of jail:      4
`- Jail list:   ban1day, nginx-limit-req, ssh-reflection, sshd

Le nombre de prisons (jail) s'affichent avec la liste. Ici nous en avons 4, il faut bien vérifier que sshd est présent.

Afficher le statut des jails avec fail2ban-client

Vérifier la configuration d'une prison

Lorsque vous spécifiez le nom d'un jail dans status, on obtient des informations supplémentaires sur ce dernier.
Par exemple les journaux Linux qui sont parcourus par fail2ban et les actions avec le nombre total d'IP bannies et la liste quand celle-ci est courte.

sudo fail2ban-client status sshd

Status for the jail: sshd
|- Filter
|  |- Currently failed: 8
|  |- Total failed:     2134
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 0
   |- Total banned:     223
   `- Banned IP list:

Par exemple, ici nous avons eu 2134 tentatives de connexion au service SSH et 223 adresses IP sont bannies depuis le lancement de fail2ban.

Afficher la configuration jail ssh avec fail2ban-client

Bannir une adresse IP

Pour bannir une adresse IP dans une prison (jail), on utilise la commande banip de cette manière :

fail2ban-client set <JAIL> banip <IP>

Par exemple pour bannir l'adresse IP 1.1.1.1 dans la jail ssh :

fail2ban-client set sshd banip 1.1.1.1

Si cela réussi, cela retourne 1 sinon 0.

Lister les adresses IP bannies

Pour lister l'intégralité des adresses IP dans les différents jail de fail2ban :

fail2ban-client banned
[{'sshd': ['1.1.1.1', '126.77.170.137', '179.43.187.37', '116.105.164.98', '59.29.227.55', '176.111.173.238']}, {'nginx-limit-req': []}, {'ban1day': []}, {'ssh-reflection': ['180.253.92.146', '221.131.165.56', '185.220.103.4', '162.247.72.199', '23.154.177.5', '185.100.87.202', '151.115.60.113', '162.247.74.27', '185.220.103.8', '107.189.14.165', '45.153.160.2', '91.132.147.168', '23.129.64.130', '216.186.250.53', '171.25.193.25', '162.247.74.200', '198.98.62.74', '62.102.148.69', '198.98.60.97', '103.167.53.253', '101.96.76.241']}]

Si vous désirez afficher que les adresses IP bannies sur un jail en particulier :

fail2ban-client get sshd banned
['126.77.170.137', '179.43.187.37', '116.105.164.98', '59.29.227.55', '176.111.173.238']

Débannir une adresse IP

Pour retirer une adresse IP d'une prison, on utilise la commande unbanip :

fail2ban-client set <JAIL> unbanip <IP>

Ainsi, par exemple pour retirer l'adresse IP 1.1.1.1. de la prison sshd :

fail2ban-client set sshd unbanip 1.1.1.1

Débannir toutes les adresses IP

Il est aussi possible de supprimer l'intégralité des adresses IP bannies sur fail2ban.
Pour cela, on utilise l'option unban avec l'option --all :

sudo fail2ban-client unban --all

Afficher la configuration d'une prison (jail)

L'option -d permet de faire un dump de la configuration.
Vous obtenez alors la configuration complète de fail2ban :

fail2ban-client -d
Afficher la configuration fail2ban avec fail2ban-client

On peut utiliser grep pour filtrer la sortie et ne lister qu'une prison en particulier, par exemple pour sshd :

fail2ban-client -d|grep "'sshd', "
Afficher la configuration fail2ban avec fail2ban-client

Enfin un pour une sortie en mode "human readable", utilisez l'option --dp :

fail2ban-client --dp

Enfin pour lister les fichiers de configuration, passez en mode verbose avec l'option -v :

 fail2ban-client --dp -v

Modifier la configuration générale d'un Jail

fail2ban-client permet aussi de modifier la configuration des prisons de fail2ban grâce à la commande set.
On indique alors la prison avec <JAIL> et la configuration et parfois la valeur nécessaire.

CommandesDescription
set <JAIL>idle on|offDéfinit l'état de ralenti de <JAIL>
set <JAIL> ignoreself true|falsePermet d'ignorer la propre adresse IP adresses pour <JAIL>
set <JAIL> addignoreipAjouter une ip dans la liste des ignore pour <JAIL>
set <JAIL> delignoreipSupprimer une IP de la liste des ignore de <JAIL>
set <JAIL> ignorecommandDéfinit ignorecommand pour <JAIL>
set <JAIL> ignorecacheDéfinit ignorecache pour <JAIL>
set <JAIL> addlogpath <FILE>['tail']Ajoute à la liste de surveillance de, éventuellement à partir de la "queue" (tail) du fichier (par défaut 'head').
set <JAIL> dellogpathSupprime de la liste de surveillance <JAIL>
set <JAIL> logencodingDéfinit le journal fichiers pour <JAIL>
set <JAIL> addjournalmatch <MATCH>Ajoute <MATCH>au filtre de journal de <JAIL>
set <JAIL> deljournalmatch <MATCH> Supprime <MATCH> du journal <JAIL> filtrer
set <JAIL> addfailregex <REGEX> Ajoute l'expression régulière <REGEX> qui doit correspondre aux échecs pour <JAIL>
set <JAIL> delfailregex <REGEX> Supprime l'expression régulière <REGEX> à <JAIL>
set <JAIL> addignoreregex <REGEX>Ajoute l'expression régulière <REGEX> qui devrait correspondre modèle exclure pour <JAIL>
set <JAIL> delignoreregex <REGEX>Supprime l'expression régulière <REGEX> à <JAIL>
set <JAIL> ignoreregexObtient la liste des expressions régulières
set <JAIL> findtime <TIME>Définit <TIME> le nombre de secondes pour lequel le filtre cherchera de retour pour <JAIL>
set <JAIL> bantime <TIME>Définit <TIME> le nombre de secondes un hôte sera banni pour <JAIL>
set <JAIL> datepattern <PATTERN>Définit le pattern <PATTERN> pour les correspondances à utiliser pour <JAIL>
set <JAIL> usednsDéfinit le mode usedns utilisé pour <JAIL>
set <JAIL> <IP> attempt [ … ]Notifier manuellement sur l'échec de <IP>
set <JAIL> banip <IP>Ban une adresse IP <IP>
set <JAIL> unbanip <IP> [--report-absent]Débannir une adresse IP <IP>
set <JAIL> maxretryDéfinit le nombre d'échecs Avant d'interdire l'hôte pour
set <JAIL> maxlinesDéfinit le nombre de pour tampon pour la recherche de regex de
Les options set de fail2ban-client pour modifier la configuration générale de Fail2ban

Modifier les actions d'un jail

En suivant le même principe, on peut aussi modifier la configuration des actions d'un Jail.

Commandes Description
set <JAIL> addaction <ACT>Ajoute une nouvelle action nommée <ACT> pour <JAIL>
set <JAIL> delaction <ACT>Supprime l'action <ACT> de <JAIL>
set <JAIL> action <ACT> actionstart <CMD>Définit la commande <CMD> pour l'action de démarrage<ACT> pour <JAIL>
set <JAIL> action <ACT> actionstop <CMD>Définit la commande <CMD> pour l'action d'arrêt <ACT> pour <JAIL>
set <JAIL> action <ACT> actioncheck <CMD>Définit la commande <CMD> pour l'action de vérification <ACT> pour <JAIL>
set <JAIL> action <ACT> actionban <CMD>Définit la commande <CMD> pour l'action de ban <ACT> pour <JAIL>
set <JAIL> action <ACT> actionunban <CMD>Définit la commande <CMD> pour l'action de déban <ACT> pour <JAIL>
set <JAIL> action <ACT> timeout <TIMEOUT> Définit la commande <CMD> pour l'action timeout <ACT> pour <JAIL>
set <JAIL> action <ACT> <PROPERTY> <VALUE>sets the of for
the action for
Définit la valeur <VALUE> de la propriété <PROPERTY> de l'action <ACT> pour <JAIL>
set <JAIL> action <ACT> <METHOD>[ <JSONKWARGS>] calls the <METHOD> with <JSONKWARGS> for the action <ACT> for <JAIL>Appel <METHOD> avec <JSONKWARGS> pour l'action <ACT> de <JAIL>
Les options set de fail2ban-client pour modifier la configuration générale de Fail2ban

Interroger la configuration d'un jail

Il est tout à fait possible d'afficher la configuration fail2ban avec la commande fail2ban-client.
Pour cela, on utilise l'option GET qui reprend la plupart des options disponibles dans le premier tableau.

Par exemple pour connaître le délai de ban du jail sshd :

fail2ban-client get sshd bantime
216000

Redémarrez fail2ban

fail2ban-client permet aussi de relancer le service fail2ban avec un fonctionnement similaire à systemctl.

Pour recharger la configuration, utilisez la commande reload comme ceci :

sudo fail2ban-client reload

Pour relancer le service fail2ban :

sudo fail2ban-client restart

Tags: