[Précédent : Ensembles d'Adresses ("Pools") et Partage de Charge] [Index] [Suivant : Journal des Evénements]
pass in on $int_if all tag INTERNAL_NET keep state
La balise INTERNAL_NET sera ajoutée à tout paquet qui correspondra à la règle précitée. Il est à noter que le mot-clé keep state : keep state (ou modulate state/synproxy state) doit être utilisé dans les règles passqui affectent des balises aux paquets.
L'affectation de balises observe les règles suivantes :
Prenons le jeu de règles suivant comme exemple :
(1) pass in on $int_if tag INT_NET keep state
(2) pass in quick on $int_if proto tcp to port 80 tag \
INT_NET_HTTP keep state
(3) pass in quick on $int_if from 192.168.1.5 keep state
De même que pour les règles de filtrage, les balises peuvent être appliquées par des règles nat, rdr, et binat en utilisant le mot-clé tag.
pass out on $ext_if tagged INT_NET keep state
Les paquets sortant à partir de $ext_ifdoivent être balisés avec la balise INT_NET pour que la règle ci-dessus corresponde à ces paquets. La correspondance inverse peut aussi être réalisée avec l'opérateur ! :
pass out on $ext_if tagged ! WIFI_NET keep state
Notez la manière dont la politique couvre all le trafic qui transite par le pare-feu. Le mot entre parenthèses indique le nom de la balise qui sera utilisée pour chaque élément de la politique.
Des règles de filtrage et de traduction doivent être écrites maintenant pour classifier les paquets au sein de la politique.
rdr on $ext_if proto tcp from <spamd> to port smtp \
tag SPAMD -> 127.0.0.1 port 8025
block all
pass in on $int_if from $int_net tag LAN_INET keep state
pass in on $int_if from $int_net to $dmz_net tag LAN_DMZ keep state
pass in on $ext_if proto tcp to $www_server port 80 tag INET_DMZ keep state
Maintenant les règles qui constituent la politique sont définies.
pass in quick on $ext_if tagged SPAMD keep state
pass out quick on $ext_if tagged LAN_INET keep state
pass out quick on $dmz_if tagged LAN_DMZ keep state
pass out quick on $dmz_if tagged INET_DMZ keep state
Maintenant que le jeu de règles a été paramétré, les modifications futures sont à apporter uniquement dans les règles de classifications. Par exemple, si un serveur POP3/SMTP est ajouté à la DMZ, il sera nécessaire d'ajouter des règles de classification pour le trafic POP3 et SMTP comme le montre l'exemple suivant :
mail_server = "192.168.0.10"
...
pass in on $ext_if proto tcp to $mail_server port { smtp, pop3 } \
tag INET_DMZ keep state
Le trafic mail sera autorisé car il fait partie de la classification INET_DMZ.
Voici le jeu de règles complet :
# macros int_if = "dc0" dmz_if = "dc1" ext_if = "ep0" int_net = "10.0.0.0/24" dmz_net = "192.168.0.0/24" www_server = "192.168.0.5" mail_server = "192.168.0.10" table <spamd> persist file "/etc/spammers" # classification -- classifier les paquets selon la politique # définie rdr on $ext_if proto tcp from <spamd> to port smtp \ tag SPAMD -> 127.0.0.1 port 8025 block all pass in on $int_if from $int_net tag LAN_INET keep state pass in on $int_if from $int_net to $dmz_net tag LAN_DMZ keep state pass in on $ext_if proto tcp to $www_server port 80 tag INET_DMZ keep state pass in on $ext_if proto tcp to $mail_server port { smtp, pop3 } \ tag INET_DMZ keep state # filtrage -- autoriser/bloquer suivant la politique. pass in quick on $ext_if tagged SPAMD keep state pass out quick on $ext_if tagged LAN_INET keep state pass out quick on $dmz_if tagged LAN_DMZ keep state pass out quick on $dmz_if tagged INET_DMZ keep state |
# brconfig bridge0 rule pass in on fxp0 src 0:de:ad:be:ef:0 \
tag USER1
Puis dans pf.conf:
pass in on fxp0 tagged USER1
[Précédent : Ensembles d'Adresses ("Pools") et Partage de Charge] [Index] [Suivant : Journal des Evénements]