Bloqueia a consulta DNS usando pfctl

1

Estou tentando criar uma regra para permitir que as consultas DNS (porta 53) apenas 8.8.8.8 server ( DNS do Google ). Consultas DNS para todos os outros servidores não devem ter êxito.

Adicionei as seguintes linhas ao arquivo /etc/pf.conf

anchor "com.xyz" 
load anchor "com.xyz" from "/etc/pf.anchors/com.xyz" 

e depois adiciono a pasta com.xyz to /etc/pf.anchors do arquivo. O conteúdo do arquivo com.xyz é fornecido abaixo:

# Options
set block-policy drop
set fingerprints "/etc/pf.os"
set ruleset-optimization basic
set skip on lo0

pass out proto tcp from any to 8.8.8.8 port 53
pass out proto udp from any to 8.8.8.8 port 53

Isso não está funcionando, eu consigo acessar a internet com algum outro servidor DNS. Alguma sugestão porque não está funcionando?

    
por Sumit 10.11.2016 / 07:10

2 respostas

0

Seu snippet parece bom, embora eu suspeite que estamos perdendo peças. Um conjunto de regras minimalista que faz o que você está procurando:

pass out
pass in inet proto { tcp udp } from any to 8.8.8.8 port domain
block drop in quick inet proto { tcp udp } from any to any port domain

E, em alguns casos, você também pode precisar de algo como:

match out on em0 from 10.0.0.0/8 nat-to 1.2.3.4

Suponho que você já tenha ativado o encaminhamento de IPs

    
por 11.11.2016 / 03:41
0

Eu consertei adicionando as seguintes linhas após o options .

block out proto tcp from any to any port 53
block out proto udp from any to any port 53

Então, basicamente peça ao pfctl para bloquear todos os pacotes DNS e peça para permitir somente as consultas DNS para 8.8.8.8 . Então, abaixo está o meu arquivo com.xyz completo.

# Options
set block-policy drop
set fingerprints "/etc/pf.os"
set ruleset-optimization basic
set skip on lo0

block out proto tcp from any to any port 53
block out proto udp from any to any port 53
pass out proto tcp from any to 8.8.8.8 port 53
pass out proto udp from any to 8.8.8.8 port 53
    
por 11.11.2016 / 15:36