« 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 | #Ces actions sont plus générales et peuvent s'appliquer à la fois à IPv4 et IPv6, selon la configuration. | ||
banaction_allports = iptables-ipset | 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]] | ||