« Fail2Ban » : différence entre les versions

 
(5 versions intermédiaires par le même utilisateur non affichées)
Ligne 134 : Ligne 134 :
<li><p>'''Éditer <code>/etc/fail2ban/jail.local</code>''' :</p>
<li><p>'''Éditer <code>/etc/fail2ban/jail.local</code>''' :</p>
<syntaxhighlight lang="ini">[DEFAULT]
<syntaxhighlight lang="ini">[DEFAULT]
banaction = iptables-ipset-proto6
#Ces actions sont plus générales et peuvent s'appliquer à la fois à IPv4 et IPv6, selon la configuration.
banaction_allports = iptables-ipset-proto6-allports</syntaxhighlight></li>
banaction = iptables-ipset[type=multiport]
banaction_allports = iptables-ipset[type=allports]
</syntaxhighlight>
</li>
<li><p>'''Ajouter vos IP de confiance''' :</p>
<li><p>'''Ajouter vos IP de confiance''' :</p>
<syntaxhighlight lang="ini">ignoreip = 127.0.0.1/8 ::1 65.65.65.65 2a50::1 </syntaxhighlight></li>
<syntaxhighlight lang="ini">ignoreip = 127.0.0.1/8 ::1 65.65.65.65 2a50::1 </syntaxhighlight></li>
Ligne 152 : Ligne 155 :
=== '''Gestion des bannissements''' ===
=== '''Gestion des bannissements''' ===
Comment vérifier si une adresse est bloquée ?
Comment vérifier si une adresse est bloquée ?
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash" copy>
sudo ipset list
sudo ipset list
</syntaxhighlight>
</syntaxhighlight>
Ligne 215 : Ligne 218 :




== '''Cas pratique''' ==
<pre>
/etc/fail2ban/jail.local
[DEFAULT]
#Ces actions sont plus générales et peuvent s'appliquer à la fois à IPv4 et IPv6, selon la configuration.
banaction = iptables-ipset[type=multiport]
banaction_allports = iptables-ipset[type=allports]
...
[apache-noscript]
backend = auto
bantime = 86400
maxretry = 5
findtime = 5m
port    = http,https
logpath  = %(apache_error_log)s
enabled=true
action = %(action_mwl)s
</pre>
=== Forcer la création d'un ensemble IPv6 ===
<syntaxhighlight lang="bash" copy>sudo fail2ban-client set apache-noscript banip 2001:db8::1234</syntaxhighlight>
Permet d'afficher des informations spécifiques sur les ensembles ipset liés à Fail2Ban, en se concentrant sur l'ensemble <code>apache-noscript</code> et les 10 lignes qui le suivent
<syntaxhighlight lang="bash" copy>sudo ipset list | grep -A 10 "apache-noscript"</syntaxhighlight>
=== Vérifier le contenu de l'ensemble IPv4 ===
<syntaxhighlight lang="bash" copy>sudo ipset list f2b-apache-noscript</syntaxhighlight>
=== Vérifier le contenu de l'ensemble IPv6 ===
<syntaxhighlight lang="bash" copy>sudo ipset list f2b-apache-noscript6</syntaxhighlight>
=== Pour confirmer que Fail2Ban bloque effectivement le trafic IPv6 : ===
<pre>
sudo iptables -L -n | grep f2b-apache-noscript
REJECT    6    --  0.0.0.0/0            0.0.0.0/0            multiport dports 80,443 match-set f2b-apache-noscript src reject-with icmp-port-unreachable
sudo ip6tables -L -n | grep f2b-apache-noscript6
REJECT    6    --  ::/0                ::/0                multiport dports 80,443 match-set f2b-apache-noscript6 src reject-with icmp6-port-unreachable
</pre>
# '''Fail2Ban est correctement intégré''' à <code>iptables</code>/<code>ip6tables</code>.<br />
# '''Les règles sont symétriques''' entre IPv4 et IPv6 :
#* Mêmes ports (80,443), même action (<code>REJECT</code>).<br />
# '''Mécanisme de blocage''' :
#* Les IP listées dans les ensembles ipset (<code>f2b-apache-noscript*</code>) sont rejetées '''immédiatement'''.<br />
#* Le rejet est '''visible''' (contrairement à <code>DROP</code>), ce qui peut décourager les scanners.
==== '''Pourquoi ces règles sont-elles critiques ?''' ====
* '''Protection d’Apache''' :
** Bloque les attaques sur les ports HTTP/HTTPS (ex: injections, bruteforce).<br />
* '''Gestion dynamique''' :
** Fail2Ban met à jour automatiquement les ensembles ipset, sans modifier les règles iptables.<br />
* '''Compatibilité IPv6''' :
** Votre configuration est résiliente contre les attaques via IPv6.
=== débloquer une IPv4 : ===
<syntaxhighlight lang="bash" copy>sudo ipset del f2b-apache-noscript 158.101.11.142</syntaxhighlight>
=== débloquer une IPv6 : ===
<syntaxhighlight lang="bash" copy>sudo ipset del f2b-apache-noscript6 2001:db8::1234</syntaxhighlight>
=== '''Commandes complémentaires utiles :''' ===
{| class="wikitable"
|-
! Objectif
! Commande
|-
| Voir toutes les règles Fail2Ban
| <html><code>sudo iptables -L -n | grep f2b</code></html>
|-
| Lister les IP bannies (IPv4)
| <code>sudo ipset list f2b-apache-noscript</code>
|-
| Supprimer une IP bannie
| <code>sudo ipset del f2b-apache-noscript 192.0.2.1</code>
|}
[[Catégorie:Linux]] [[Catégorie:Debian]] [[Catégorie:Systemd]]
[[Catégorie:Linux]] [[Catégorie:Debian]] [[Catégorie:Systemd]]