OpenBSD Firewall — Primeiras impressões

Já utilizo OpenBSD para alguns serviços, mas nunca tinha utilizado ele em firewalls devido a minha experiência um pouco avançada com Netfilter/Iptables no Linux, mas devido recentes decepções com o Linux nessa parte de firewall, resolvi aprender o PF e ver se era possível eu começar a adota-lo como firewall.

No PF algumas definições são um pouco diferentes do Iptables, começando pela forma de interpretação das regras, onde, uma conexão pode coincidir com várias regras, mas sempre será aceita a última, no NAT é ao contrário, a primeira regra que combinar é aceita.

No PF não existe algo como o FORWARD do Iptables para tratar conexões que atravessem o firewall, e conexões NATeadas são tratadas com endereços já traduzidos, devido a ordem de leitura das regras, o NAT anteceder o Filter, nessa parte é que literalmente quebrei a cabeça.

Na documentação oficial, não menciona regras de exemplo de situações de bloqueios de serviços da rede interna seguido do NAT propriamente dito, sempre dei preferência a firewall default drop ou default block, devido a segurança, na internet praticamente não achei exemplos desse tipo de regras, apenas de regras em firewall default accept ou default pass.

Não sei se existe alguma perseguição contra mim, mas na internet não achei ninguém que me ajudasse, mesmo nas comunidades de OpenBSD.

O princípio do PF é o seguinte:

Regras de NAT são interpretadas primeiro e são válidas as primeiras;

Regras de Filter são as últimas a serem lidas, e a ultima que combine é a válida;

Para tratar tráfego interno no acesso por NAT, apenas libere o tráfego permitido que entre no firewall, e depois libere o destino com origem do firewall, por exemplo:

Liberar o acesso da rede interna a internet portas 21, 80, 443:

nat on $interface_externa from $interface_interna:network -> ($interface_externa)block all
pass out on $interface_externa proto tcp to any port { 21 80 443 } keep state
pass in on $interface_interna proto tcp from $lan to any port { 21 80 443 } keep state

O princípio é este, lembra muito a forma utilizada no Ipchains, sempre liberando até o firewall e depois à partir dele. 

Deixe um comentário