fail2ban ou comment bannir les curieux

j'ai découvert une solution qui a l'avantage de gérer iptables tout seul, il s'agit de fail2ban.
Fail2ban va lire vos fichiers de log d'authentification et va bannir les adresses IP des intrus qui vont tenter de s'authentifier en brute-force (j'ai franchement été surpris du nombre d'attaque que l'on peut subir), une fois notre intrus banni fail2ban va ajouter une règle drop dans iptables qui va rejeter ces adresses IP pour une durée que l'on va pouvoir déterminer.
C'est biensur un logiciel libre publié sous licence GPL v2 et il est codé en langage Python.

Son installation est assez complexe il va falloir ouvrir un terminal et lancer cette commande

sudo apt-get install fail2ban

Voilà c'est fini il est installé, il nous reste maintenant à le configurer.
Nous allons donc commencer par créer le fichier /etc/fail2ban/jail.local qui sera une copie du fichier jail.conf, ça évitera la perte de notre configuration lors de la prochaine mis à jour.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

et on édite avec notre petit nano

sudo nano /etc/fail2ban/jail.local

On obtient un fichier qui est assez compréhensible malgré qu'il soit en english
Première section les valeurs par défaut
Pour ignoreip vous l'aurez compris ce sont les IP ignorées, j'ai donc rajouté mon réseau local et W.X.Y.Z étant mon ip extérieur en mettant un simple espace entre chaque ip (si vous ne comprenez pas 192.168.0.0/24 je vous suggère de tester nmap 192.168.0.0/24 dans votre terminal, à éviter avec 127.0.0.1/8, mais aucun risque je rappel que CTRL+C permet d’arrêter une commande dans le terminal).

ignoreip = 127.0.0.1/8 192.168.0.0/24 W.X.Y.Z

Le bantime est par défaut réglé sur 600 soit dix minutes un peu léger je trouve, j'ai donc choisi de bannir une semaine soit 604800 secondes

bantime = 604800

Le souci c'est qu'en choisissant un bantime d'une semaine, le findtime par défaut étant lui aussi réglé par défaut sur dix minutes est utilisé, la solution est donc d'ajouter un findtime d'une journée soit 86400 secondes
(il se peut que le findtime ne soit pas d'origine sur votre fichier, je vous conseille de l'ajouter sous bantime)

findtime = 86400

max retry est à 3 c'est à dire qu'avec 3 échecs l'intrus sera banni

maxretry = 3

pour backend on laisse en auto
destmail permet d'indiquer l'adresse mail de la machine qui envoie les messages par fail2ban

destemail = root@localhost

on passe à la section Actions
banaction permet de définir l'action qui sera utilisé par défaut

banaction = iptables-multiport

mta permet de choisir le serveur mail à utiliser

mta = sendmail

protocol permet de choisir le protocole sur lequel on va analyser le traffic

protocol = tcp

ensuite nous avons les paramètres des actions possible il y a trois possibilités.

action = %(action_)s

Si vous voulez juste bannir l'ip il n'y a rien à modifier
Si vous voulez bannir l'ip et recevoir un mail avec un whois de l'ip modifiez la ligne ainsi

action = %(action_mw)s

Si vous voulez en plus obtenir les log modifiez la ainsi

action = %(action_mwl)s

Pour que les mails soient opérationnels il vous faudra installer ssmtp et le configurer

Nous passons maintenant à la dernière partie les prisons (jail)
là encore c'est déjà pré-paramétré, nous allons voir les valeurs possible si rien n'est spécifié c'est la valeur par défaut qui sera prise en compte.

enabled : permet d'activer ou désactiver la prison les valeurs possible sont true et false
port : permet de choisir quel port sera surveiller on peut choisir le numéro ou le nom du (des) port(s)
filter : permet de choisir le filtre à utiliser
action : permet de choisir l'action à accomplir
servicemail : permet d'envoyer un mail pour chaque ban
logpath : permet d'indiquer le chemin du fichier de log à surveiller
maxretry : permet de choisir le nombre de tentatives possibles avant de passer à l'action
findtime : permet de choisir la durée en seconde durant laquelle les tentatives sont analysées
bantime : permet de choisir le temps du blocage

une fois les modifications enregistrées on relance le service avec

sudo service fail2ban restart

Voila votre serveur sera déjà un peu mieux protégé, n'hésitez pas à chercher sur le net pour obtenir d'autre filtre que ceux déjà fourni d'origine.

Vus : 697
Publié par ljere : 30