doc:formations:hebergement:serveur:proteger:fail2ban
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
doc:formations:hebergement:serveur:proteger:fail2ban [2022/10/25 16:18] – [Tentatives d'accès "brute force"] jeremie | doc:formations:hebergement:serveur:proteger:fail2ban [2022/11/17 12:24] (Version actuelle) – [brute force sur nginx] jeremie | ||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
L' | L' | ||
- | ==== protéger SSH ==== | + | ===== brute force sur ssh ===== |
Pour SSH spécifiquement, | Pour SSH spécifiquement, | ||
Ligne 26: | Ligne 26: | ||
</ | </ | ||
- | ==== nginx : tentatives | + | ===== recherche abusive de point d' |
+ | |||
+ | Den ombreux " | ||
+ | |||
+ | Il est trivial de bloquer les IP source pendant un petit délai, par exemple 300 secondes (5 minutes) si on détecte de 10 essais infructueux en moins de 10 secondes: | ||
+ | |||
+ | <code nginx / | ||
+ | [Definition] | ||
+ | failregex = ^< | ||
+ | ignoreregex = | ||
+ | </ | ||
+ | |||
+ | <code nginx / | ||
+ | # A ajouter à la fin du fichier: | ||
+ | [nginx-4xx] | ||
+ | enabled = true | ||
+ | port = http,https | ||
+ | filter = nginx-4xx | ||
+ | logpath = / | ||
+ | bantime = 300 | ||
+ | findtime = 10 | ||
+ | maxretry = 10 | ||
+ | </ | ||
+ | |||
+ | Enfin, on relance et on teste avec: | ||
+ | |||
+ | service fail2ban restart | ||
+ | fail2ban-client status nginx-4xx | ||
+ | |||
+ | ===== brute force sur nginx ===== | ||
'' | '' | ||
Ligne 57: | Ligne 86: | ||
- | Fail2ban permet de tester en amont la validité des règles, mais aussi d' | + | :!: Fail2ban permet de tester en amont la validité des règles |
< | < | ||
Ligne 72: | Ligne 101: | ||
</ | </ | ||
+ | ===== brute force sur postgresql ===== | ||
+ | |||
+ | On peut ajouter ces règles: | ||
+ | |||
+ | Dans ''/ | ||
+ | < | ||
+ | [postgresql] | ||
+ | enabled = true | ||
+ | port = 5432 | ||
+ | protocol = tcp | ||
+ | filter = custom-postgresql | ||
+ | logpath = / | ||
+ | maxretry = 3 | ||
+ | </ | ||
+ | |||
+ | Puis le filtre dans ''/ | ||
+ | < | ||
+ | [Definition] | ||
+ | failregex = ^< | ||
+ | ^< | ||
+ | ignoreregex = duration:# | ||
+ | </ | ||
+ | |||
+ | Enfin, pour que celui-ci marche, on modifie la composition du fichier log de postgresql afin d'y mettre l'IP client en-tête. C'est dans le fichier ''/ | ||
+ | < | ||
+ | (...) | ||
+ | log_line_prefix = '%h %m [%p] %q%u@%d ' | ||
+ | (...) | ||
+ | </ | ||
+ | |||
+ | :!: on peut tester avec '' |
doc/formations/hebergement/serveur/proteger/fail2ban.1666714692.txt.gz · Dernière modification : 2022/10/25 16:18 de jeremie