Empêcher le brute force

This commit is contained in:
jdubois 2020-03-11 16:59:20 +01:00
parent 3eb8258a8d
commit 3e4fe78861

View file

@ -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 <bruteforce> persist
block in quick proto tcp from <bruteforce> 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 <bruteforce> 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 <bruteforce> (`overload <bruteforce>`).
- 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 <bruteforce> 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