From 3e4fe788618adf20778c522acd8a3298af8e790b Mon Sep 17 00:00:00 2001 From: jdubois Date: Wed, 11 Mar 2020 16:59:20 +0100 Subject: [PATCH] =?UTF-8?q?Emp=C3=AAcher=20le=20brute=20force?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HowtoOpenBSD/PacketFilter.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/HowtoOpenBSD/PacketFilter.md b/HowtoOpenBSD/PacketFilter.md index c1ea0997..fb7d6359 100644 --- a/HowtoOpenBSD/PacketFilter.md +++ b/HowtoOpenBSD/PacketFilter.md @@ -136,6 +136,34 @@ Ainsi, au maximum 50 000 états pourront être créés pour 192.0.2.10:80 et 192 Attention, les 2 limites (la globale et celle spécifique à la règle) ne sont pas séparées. Si la limite globale est configuré à 150 000 (`set limit states 150000`) et que 50 000 états sont atteints pour 192.0.2.10:80, alors il ne restera que 100 000 états possible globalement. +#### Empêcher le brute force + +Il est possible d'empêcher le brute force vers un service particulier. + +Pour cela, la configuration suivante est nécessaire : + +~~~ +table persist +block in quick proto tcp from to port 2222 + +pass in quick on $ext_if proto tcp to port 2222 rdr-to 192.0.2.5 port ssh \ + keep state (max-src-conn 10, max-src-conn-rate 5/30, overload flush) +~~~ + +Cette règle signifie que : + +- Une IP peut établir jusqu'à 10 connexion simultanées maximum vers le port 2222 (`max-src-conn 10`). +- Seules 5 connexions peuvent se faire sur un laps de temps de 30 secondes par une même IP (`max-src-conn-rate 5/30`). +- Au-delà des 5 connexions échouées durant ces 30 secondes, l'IP en question est insérée dans la table (`overload `). +- Les autres connexions établies par cette même IP sur cette même régle (connexion SSH vers le port 2222) sont tuées (`flush`). +- L'IP est bannie. Elle peut toujours tenter toute autre connexion, mais ne peut plus tenter de connexion SSH vers le port 2222 (`block in quick proto tcp from to port 2222`). Cette règle peut être adaptée selon ce que l'on veut bloquer à l'IP bannie. + +La table ne se vide pas avec un rechargement de pf (`pfctl -f /etc/pf.conf`). + +* On peut voir les IPs contenues dans cette table avec `pfctl -t bruteforce -T show`. +* On peut entièrement vider la table avec `pfctl -t bruteforce -T flush`. +* On peut lever une IP spécifique de la table avec `pfctl -t bruteforce -T delete X.X.X.X`. + #### Routage particulier (avec route-to) Pour avoir un routage spécifique, i.e. différent de celui donné par la table de