From 131bc140ba021016fa81aa5eb54f5bfbbfd4b7e8 Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Sat, 10 Aug 2013 12:42:21 +0200 Subject: Updated article on fail2ban --- content/Informatique/fail2ban.rst | 52 ++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/content/Informatique/fail2ban.rst b/content/Informatique/fail2ban.rst index 951f030..cee3534 100644 --- a/content/Informatique/fail2ban.rst +++ b/content/Informatique/fail2ban.rst @@ -55,7 +55,7 @@ paramètres supplémentaires : port = http #On ne bloque que le port 80 filter = apache-block # le nom du fichier que l'on a créé juste avant action = %(action_)s - logpath = /tmp/log/apache*/*access.log + logpath = /tmp/log/apache/access.log maxretry = 1 #Nombre de tentatives banaction = iptables-redirect # L'action à appliquer sur l'IP bantime = 3600 # Le temps pendant lequel l'ip sera bannie. @@ -72,7 +72,8 @@ l'adresse, et une autre règle qui supprime ce blocage. Nous allons maintenant jouer avec iptables pour réaliser quelques effets intéressant avec nos IPs à bannir : -Relancer la durée du blocage : +Relancer la durée du blocage +++++++++++++++++++++++++++++ Par défaut, fail2ban retire le blocage sur l'IP une fois que la durée spécifiée est écoulée. Je trouve ceci limité car cela n'empêche pas @@ -93,17 +94,32 @@ présentera comme suit : .. code-block:: bash #On crée une nouvelle table - actionstart = iptables -N fail2ban- - #On bloque les connexions 2 fois sur 3 - iptables -A fail2ban- -m statistic --mode random --probability .33 -j REJECT --reject-with icmp-host unreachable - iptables -A fail2ban- -j DROP - #On insère une nouvelle règle qui met à jour le compteur à chaques nouvelles tentatives tant que le délai n'est pas écoulé - iptables -I INPUT -p -m multiport --dports -m recent --update --seconds 360000 --name fail2ban-- -j fail2ban- + actionstart = iptables -N fail2ban- + iptables -A fail2ban- -j DROP + #On insère une nouvelle règle qui met à jour le compteur à chaques nouvelles tentatives tant que le délai n'est pas écoulé + iptables -I INPUT -p -m multiport --dports -m recent --update --seconds 360000 --name fail2ban-- -j fail2ban- - #Pour bannir une IP, il suffit de l'écrire dans le fichier de configuration de mod-recent - actionban = echo > /proc/net/ipt_recent/fail2ban- + actionstop = iptables -D INPUT -p -m multiport --dports -m recent --update --seconds 360000 --name fail2ban-- -j fail2ban- + iptables -F fail2ban- + iptables -X fail2ban- -Mettre un message d'alerte : + # Pour bannir une IP, il suffit de l'écrire dans le fichier de configuration de mod-recent + actionban = echo + > /proc/net/xt_recent/fail2ban- + + # On ne retire pas de l'unban, cela se fera tout seul une fois que l'attaquant aura terminé de se connecter + actionunban = + +Il nous suffit de l'enregister dans le fichier `/etc/fail2ban/action.d/iptables-recent.conf` + +Si l'on veut bloquer une ip manuellement, il suffit d'éxécuter la dernière +ligne, à savoir + +.. code-block:: console + + # echo +${IP} > /proc/net/xt_recent/fail2ban- + +Mettre un message d'alerte +++++++++++++++++++++++++++ On peut décider d'annoncer à notre utilisateur bloqué que nous avons banni son IP. Cela peut être utile si nous avons mis en place des règles @@ -150,6 +166,20 @@ ralentir le temps d'affichage de la page Les règles d'unban et de stop se font en symetrique de ban et start, en supprimant des règles crées. + +Utiliser les nouvelles règles +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Cela se fait simplement en utilisant les nouveaux noms de fichier à la place +des anciens. Dans le fichier `/etc/fail2ban/jail.conf`, il suffit d'utiliser la +directive : + +.. code-block:: bash + + banaction = iptables-recent + +pour utiliser les nouvelles directives à la action de filtrage. + Voilà, cela permet de mettre en place une sécurité personnalisée et adaptée, qui sort déjà des outils et configuration standards (ce qui est toujours une bonne chose en matière de sécurité). Les exemples que -- cgit v1.2.3