[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.
Une balise peut aussi être affectée grâce à une macro. Par exemple :
name = "INTERNAL_NET"
pass in on $int_if all tag $name keep state
On peut utiliser un ensemble de macros prédéfinies.
Ces macros sont interprétées lors du chargement des règles, PAS en "runtime".
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_if doivent ê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
Les règles de réécriture (nat/rdr/binat) peuvent aussi utiliser le mot clé tagged pour correspondre aux paquets.
Notez que la politique couvre tout 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 à présent être écrites 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
nat on $ext_if tag LAN_INET_NAT tagged LAN_INET -> ($ext_if)
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_NAT 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 classification. 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
nat on $ext_if tag LAN_INET_NAT tagged LAN_INET -> ($ext_if)
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_NAT 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]