Análise de logs RPZ em baixo nível (BIND)
Introdução
A análise de logs em resolvers DNS com RPZ permite:
Detectar bloqueios (NXDOMAIN)
Identificar clientes (IPs de origem)
Analisar comportamento de tráfego
Detectar erros de acesso
Validar políticas de segurança
Este documento é orientado à análise prática em ambientes produtivos.
Quick Start (para suporte)
Se você visualizar nos logs:
NXDOMAIN→ bloqueio por RPZPASSTHRU→ permitido explicitamentedenied→ problema de ACL
Comandos rápidos:
tail -F dns_rpz.log | grep -F "NXDOMAIN"
tail -F dns_rpz.log | grep -F "<IP>"
tail -F dns_rpz.log | grep -F "<dominio>"
Dica
Sempre começar filtrando pelo IP do cliente.
Fluxo básico de análise
Cliente → Resolver (BIND + RPZ) → Internet
↓
Logs (dns_rpz.log)
Estrutura de uma linha de log RPZ
Exemplo:
23-Feb-2026 04:50:25.520 client @0x7f136318ec00 45.191.233.142#15203 (cdn98.adtp1.xyz): rpz QNAME NXDOMAIN rewrite cdn98.adtp1.xyz/A/IN via cdn98.adtp1.xyz.planisys.threats
Detalhamento:
timestamp→ data e horaclient @0x...→ identificador interno do BIND45.191.233.142→ IP do cliente#15203→ porta de origem(cdn98.adtp1.xyz)→ domínio consultadoNXDOMAIN rewrite→ ação aplicadaA/IN→ tipo de consultavia ...planisys.threats→ lista RPZ aplicada
Bloqueios (NXDOMAIN)
Identificação:
rpz QNAME NXDOMAIN rewrite
Interpretação:
O domínio foi bloqueado pelo RPZ
É respondido NXDOMAIN de forma intencional
Impacto:
A aplicação pode deixar de funcionar
Pode quebrar o carregamento parcial de sites
Pode gerar tickets de usuários
Exemplo:
(ads.nexage.com): rpz QNAME NXDOMAIN rewrite ads.nexage.com/A/IN via ads.nexage.com.planisys.threats
Nota
NXDOMAIN em RPZ não é um erro, é uma política aplicada.
Consultas permitidas (PASSTHRU)
Exemplo:
rpz QNAME PASSTHRU rewrite www.google.com/A/IN via www.google.com.allowlist.rpz
Interpretação:
O domínio coincide com uma regra RPZ
Está permitido explicitamente
Não é bloqueado
Casos típicos:
Google
Amazon
serviços críticos
Consultas negadas (ACL)
Exemplo:
client 172.31.18.61 (...) (api16-core.tiktokv.com): query (cache) 'api16-core.tiktokv.com/A/IN' denied (allow-query-cache did not match)
Interpretação:
O cliente não está autorizado
Não cumpre regras ACL (ex: trusted_blocks)
Possíveis causas:
Cliente mal configurado
NAT incorreto
tráfego inesperado
Aviso
Isto não é um bloqueio RPZ, é uma rejeição do resolver.
Visualização em tempo real
tail -F dns_rpz.log
Filtros úteis:
tail -F dns_rpz.log | grep -F "NXDOMAIN"
tail -F dns_rpz.log | grep -F "<IP>"
tail -F dns_rpz.log | grep -F "<dominio>"
Uso de grep -F
O parâmetro -F indica busca literal (sem regex).
Vantagens:
Maior velocidade
Menor uso de CPU
Correspondências exatas
Exemplo incorreto:
grep "45.191.233.142" dns_rpz.log
Exemplo correto:
grep -F "45.191.233.142" dns_rpz.log
Dica
Em logs de alto volume, utilizar sempre grep -F.
Rastreo de IPs cliente
grep -F "45.191.233.142" dns_rpz.log
Dominios consultados:
grep -F "45.191.233.142" dns_rpz.log | awk -F'[()]' '{print $2}' | sort | uniq -c | sort -nr
Top dominios bloqueados
awk -F'[()]' '{print $2}' dns_rpz.log | sort | uniq -c | sort -nr | head
Top IPs que generan tráfico
awk '{print $5}' dns_rpz.log | cut -d'#' -f1 | sort | uniq -c | sort -nr | head
Uso de screen para troubleshooting
Crear sesión:
screen -S dns-debug
Comandos básicos:
Ctrl + A + C # nueva ventana
Ctrl + A + N # siguiente
Ctrl + A + P # anterior
Ctrl + A + D # detach
Reconectar:
screen -r dns-debug
Ejemplo práctico:
Ventana 1:
tail -F dns_rpz.log
Ventana 2:
tail -F dns_rpz.log | grep -F "NXDOMAIN"
Ventana 3:
tail -F dns_rpz.log | grep -F "<IP>"
Caso práctico: usuario sin acceso
Obtener IP del cliente
Buscar en logs:
grep -F "<IP>" dns_rpz.log
Analizar:
NXDOMAIN→ bloqueo RPZdenied→ problema ACLsin resultados → problema externo a DNS
Detección de comportamiento sospechoso
Indicadores:
alto volumen de consultas
dominios aleatorios
múltiples NXDOMAIN
Exemplo:
grep -F "<IP>" dns_rpz.log | wc -l
Consideraciones sobre logrotate
Problemas comunes:
pérdida de seguimiento con
tail -fprocesos colgados
alto consumo de CPU
Recomendaciones:
usar
tail -Fusar
grep -Fevitar regex complejas
Errores comunes
interpretar NXDOMAIN como error DNS
no usar
-Fen grepanalizar logs sin filtrar
usar comandos pesados en producción
Conclusión
El análisis de dns_rpz.log permite:
entender bloqueos en tiempo real
identificar clientes
detectar anomalías
validar políticas
El uso eficiente de tail -F, grep -F y screen es clave para operar en entornos de alto volumen sin impactar la infraestructura.