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 RPZ

  • PASSTHRU → permitido explicitamente

  • denied → 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 hora

  • client @0x... → identificador interno do BIND

  • 45.191.233.142 → IP do cliente

  • #15203 → porta de origem

  • (cdn98.adtp1.xyz) → domínio consultado

  • NXDOMAIN rewrite → ação aplicada

  • A/IN → tipo de consulta

  • via ...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

  1. Obtener IP del cliente

  2. Buscar en logs:

grep -F "<IP>" dns_rpz.log
  1. Analizar:

  • NXDOMAIN → bloqueo RPZ

  • denied → problema ACL

  • sin 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 -f

  • procesos colgados

  • alto consumo de CPU

Recomendaciones:

  • usar tail -F

  • usar grep -F

  • evitar regex complejas

Errores comunes

  • interpretar NXDOMAIN como error DNS

  • no usar -F en grep

  • analizar 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.