fail2ban ou comment bannir les curieux

Vu que mon article sur iptables à l'air d'en intéresser plus d'un, mais qu'il reste complexe à configurer,
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 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 **.***.**.***
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
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)
la 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 : 615
Publié par ljere : 30