[Anterior: Grupos de Endereços e Balanceamento de Carga] [Conteúdo] [Próximo: Logging]
pass in on $int_if all tag INTERNAL_NET keep state
A marca INTERNAL_NET será adicionada a qualquer pacote que case com a regra acima.
Uma marca também pode ser colocada usando-se uma macro. Por exemplo:
name = "INTERNAL_NET"
pass in on $int_if all tag $name keep state
Existem algumas macros predefinidas que também podem ser usadas.
Estas macros são expandidas em tempo de carregamento das regras e NÃO em tempo de execução.
A marcação segue as seguintes regras:
Tomemos as seguintes regras como exemplo.
(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
Além de aplicar marcação com regras de filtragem, regras de nat, rdr e binat também podem marcar pacotes utilizando a palavra-chave tag.
pass out on $ext_if tagged INT_NET keep state
Pacotes saindo pela interface $ext_if devem estar marcados com INT_NET para combinar com a regra acima. O inverso também pode ser feito utilizando o operador ! para casar com pacotes que não estiverem marcados.
pass out on $ext_if ! tagged WIFI_NET keep state
Regras de tradução (nat/rdr/binat) podem também usar a palavra-chave tagged para casar pacotes.
Perceba a forma como a política cobre todo o tráfego que passa pelo firewall. A palavra entre parênteses indica qual marca será usada para cada item na política.
Agora devem ser definidas regras de filtragem e tradução para classificar os pacotes na política.
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
Agora as regras que definem a política são criadas.
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
Agora que todas regras estão prontas, fazer alterações no firewall é uma questão de modificar as regras de classificação de pacotes. Por exemplo, se for adicionado um servidor POP3/SMTP na DMZ, será necessário adicionar regras de classificação para tráfego POP3 e SMTP, desta forma:
mail_server = "192.168.0.10"
...
pass in on $ext_if proto tcp to $mail_server port { smtp, pop3 } \
tag INET_DMZ keep state
Tráfego de email será aceito como parte da política INET_DMZ.
O conjunto completo de regras:
# 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"
# classificação -- classifica pacotes com base na política do firewall.
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
# aplicação da política -- permite/bloqueia com base na política
# do firewall.
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
E no pf.conf:
pass in on fxp0 tagged USER1
[Anterior: Grupos de Endereços e Balanceamento de Carga] [Conteúdo] [Próximo: Logging]