Exclure une IP d'une règle autorisant un préfixe plus large

This commit is contained in:
jdubois 2023-10-02 10:10:23 +02:00
parent 893c836d2c
commit 382d25ee69

View file

@ -265,6 +265,54 @@ pass in quick on $wan2 from … to self reply-to ($wan2)
> Note : Attention, l'IP autorisée par cette règle aura un accès complet au routeur.
### Exclure une IP d'une règle autorisant un préfixe plus large
Imaginons la règle suivante, permettant de ne rien bloquer en entrée sur l'interface WAN, depuis n'importe où et à destination du préfixe 192.0.2.0/24 :
~~~
pass in quick on $wan from any to 192.0.2.0/24
~~~
Si dans ce préfixe, il y a l'IP 192.0.2.5 en particulier pour laquelle on ne veut pas avoir cette large autorisation, on pourrait vouloir l'exclure.
#### Ce qu'il ne faut PAS faire
PacketFilter permet la négation avec le point d'exclamation `!`. On pourrait donc penser à modifier la règle précédente pour obtenir ceci :
~~~
pass in quick on $wan from any to { 192.0.2.0/24, !192.0.2.5 }
~~~
Mais attention ! Cette règle n'indique pas de tout autoriser vers tout le préfixe 192.0.2.0/24 sauf vers l'IP 192.0.2.5. Elle est découpée en 2 règles indépendantes :
~~~
pass in quick on $wan from any to 192.0.2.0/24
pass in quick on $wan from any to !192.0.2.5
~~~
La première indiquant de tout autoriser vers 192.0.2.0/24, et la deuxième indiquant de tout autoriser vers tout le monde, sauf vers 192.0.2.5. On se retrouve alors avec une autorisation depuis n'importe qui et vers l'ensemble de notre réseau, sauf 192.0.2.5.
#### Ce qu'il faut faire
Pour exclure une IP d'une autorisation plus large, il faut créer une règle `block` en amont :
~~~
block in quick on $wan from any to 192.0.2.5
pass in quick on $wan from any to 192.0.2.0/24
~~~
Ainsi, la première règle de `block` permettra de ne rien autoriser à destination de 192.0.2.5, et la deuxième règle permettra, pour le reste du préfixe 192.0.2.0/24, de tout autoriser.
Si, pour cette même IP 192.0.2.5, on ne veut pas tout bloquer mais autoriser seulement certains ports, il faut encore ajouter une autre règle :
~~~
pass in quick on $wan proto tcp from any to 192.0.2.5 port 443
block in quick on $wan from any to 192.0.2.5
pass in quick on $wan from any to 192.0.2.0/24
~~~
On aura correctement notre autorisation précise vers 192.0.2.5 sur son port TCP/443, les autres ports seront bloqués, et tout le reste du préfixe sera entièrement autorisé.
### Tuer un état selon son ID
On peut voir l'ensemble des états d'un firewall et leur ID :