Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
netadmin:fail2ban [2019/05/20 14:44] – créée yoann | netadmin:fail2ban [2023/04/27 13:28] (Version actuelle) – [Références] yoann | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
{{tag> | {{tag> | ||
+ | |||
+ | : | ||
====== Fail2ban ====== | ====== Fail2ban ====== | ||
- | Analyse les journaux des différents services en se basant sur des expression rationnelles et isole automatiquement les IP générant un nombre trop élevé d' | + | Analyse les journaux des différents services en se basant sur des expression rationnelles |
Ligne 13: | Ligne 15: | ||
* Les règles sont placées dans le dossier **/ | * Les règles sont placées dans le dossier **/ | ||
- | * Le fichier de conf s' | + | * Le fichier de conf s' |
<code bash> | <code bash> | ||
$ sudo cp / | $ sudo cp / | ||
</ | </ | ||
+ | |||
+ | ===== Exceptions ===== | ||
+ | |||
+ | Dans la section globale, on peut spécifier des IPs à ignorer (à ne jamais bannir). | ||
+ | |||
+ | < | ||
+ | [DEFAULT] | ||
+ | |||
+ | ignorself = true | ||
+ | ignoreip = 127.0.0.1/8 ::1 | ||
+ | </ | ||
===== Notifications email ===== | ===== Notifications email ===== | ||
- | Définir les variables suivantes dans le fichier jail.local | + | Définir les variables suivantes dans le fichier |
< | < | ||
destemail = user@domain | destemail = user@domain | ||
Ligne 32: | Ligne 45: | ||
===== Protection du service ssh ===== | ===== Protection du service ssh ===== | ||
- | Pour activer la surveillance du service ssh, vérifier la valeur de la directive **enable** dans la section [ssh] | + | Pour activer la surveillance du service ssh, vérifier la valeur de la directive **enable** dans la section [sshd] |
+ | |||
+ | < | ||
+ | Si le service SSH n' | ||
+ | </ | ||
< | < | ||
- | [ssh] | + | [sshd] |
enabled | enabled | ||
Ligne 51: | Ligne 68: | ||
===== Test ===== | ===== Test ===== | ||
- | Pour afficher l' | + | Pour afficher l' |
<code bash> | <code bash> | ||
Ligne 57: | Ligne 74: | ||
</ | </ | ||
- | Pour le détail de la cellule | + | Pour le détail de la cellule |
<code bash> | <code bash> | ||
- | $ sudo fail2ban-client status | + | $ sudo fail2ban-client status |
</ | </ | ||
+ | |||
+ | Si des hôtes sont bannis, on peut vérifier les règles créées par fail2ban: | ||
+ | <code bash> | ||
+ | iptables -L -n | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Chain INPUT (policy DROP) | ||
+ | target | ||
+ | f2b-sshd | ||
+ | |||
+ | . . . | ||
+ | |||
+ | Chain f2b-sshd (1 references) | ||
+ | target | ||
+ | REJECT | ||
+ | REJECT | ||
+ | REJECT | ||
+ | REJECT | ||
+ | REJECT | ||
+ | REJECT | ||
+ | REJECT | ||
+ | REJECT | ||
+ | REJECT | ||
+ | RETURN | ||
+ | </ | ||
+ | |||
+ | On peut être surpris de constater que les règles générées par fail2ban utilisent la cible REJECT plutôt que DROP. Ce choix a été justifié par les développeurs dans la conversation https:// | ||
+ | |||
+ | On peut toutefois changer se comportement par défaut si on le souhaite en éditant le fichier / | ||
+ | |||
+ | < | ||
+ | # Option: | ||
+ | # Note: This is what the action does with rules. This can be any jump target | ||
+ | # as per the iptables man page (section 8). Common values are DROP | ||
+ | # REJECT, REJECT --reject-with icmp6-port-unreachable | ||
+ | # Values: | ||
+ | #blocktype = REJECT --reject-with icmp6-port-unreachable | ||
+ | |||
+ | blocktype = DROP | ||
+ | </ | ||
===== Usage ===== | ===== Usage ===== | ||
Ligne 69: | Ligne 127: | ||
<code bash> | <code bash> | ||
# Déterminer combien de temps est bannie une ip pour ssh | # Déterminer combien de temps est bannie une ip pour ssh | ||
- | $ fail2ban-client get ssh bantime | + | $ fail2ban-client get sshd bantime |
# Déterminer le nombre d' | # Déterminer le nombre d' | ||
- | $ fail2ban-client get ssh maxretry | + | $ fail2ban-client get sshd maxretry |
</ | </ | ||
Ligne 78: | Ligne 136: | ||
<code bash> | <code bash> | ||
- | $ fail2ban-client set ssh maxretry 3 | + | $ fail2ban-client set sshd maxretry 3 |
</ | </ | ||
Ligne 85: | Ligne 143: | ||
<code bash> | <code bash> | ||
# Interdire l' | # Interdire l' | ||
- | $ fail2ban-client set ssh banip 192.168.0.34 | + | $ fail2ban-client set sshd banip 192.168.0.34 |
# Autoriser à nouveau une IP | # Autoriser à nouveau une IP | ||
- | $ fail2ban-client set ssh unbanip 192.168.0.34 | + | $ fail2ban-client set sshd unbanip 192.168.0.34 |
</ | </ | ||
+ | |||
+ | < | ||
+ | Les valeurs spécifiées via la ligne de commande sont effectives immédiatement mais seront remplacées par celles définies dans les fichiers de configuration lorsque la configuration sera rechargée ou le service redémarré. | ||
+ | </ | ||
===== Déploiement ===== | ===== Déploiement ===== | ||
Sur serveurs en DMZ. | Sur serveurs en DMZ. | ||
+ | |||
+ | |||
+ | ===== Alternatives ===== | ||
+ | |||
+ | * Tallow : plus léger, exploite les journaux systemd; | ||
+ | * SSHGuard. | ||
+ | |||
===== Références ===== | ===== Références ===== | ||
Ligne 99: | Ligne 168: | ||
* https:// | * https:// | ||
* https:// | * https:// | ||
+ | * https:// | ||
+ | * https:// |