Created: 2023-03-19 00:11 Updated: 2023-03-19 00:11

Em algumas situações, pode ser interessante obter as requisições recebidas pelo serviço de DNS. No Bind, um dos mais utilizados serviços de DNS, Edite o arquivo named.conf.options e adicione:

channel queries_log {
    file "/var/log/named-queries.log";
    print-time yes;
};
category queries { queries_log; };

Crie o arquivo e ajuste as permissões:

touch named-queries.log
chown bind:bind named-queries.log

Isso habilitará o log das requisições de DNS. O arquivo de log deve crescer bastante, então, configure o logrotate. Crie o arquivo /etc/logrotate.d/bind com o seguinte conteúdo:

/var/log/named/query.log {
    weekly
    missingok
    rotate 8
    compress
    delaycompress
    notifempty
    create 644 bind bind

    #postrotate
    #    if [ -e /var/log/named/query.log.1 ]; then
    #        exec su - YOUR_USER -c '/usr/local/bin/update_bind_log_analyzer.sh /var/log/named/query.log.1'
    #    fi
    #endscript
}

Reinicie o Bind:

systemctl restart bind

Para poder habilitar e desabilitar o log das requisições dinamicamente, edite o arquivo named.conf.options e adicione o seguinte:

options {
    // ... conteúdo omitido

    querylog no;
}

Esta configuração não iniciará o registro de log das queries quando o Bind for iniciado. Para habilitar o log das requisições, execute o comando:

rndc querylog start

E, para desabilitar:

rndc querylog stop

Agora basta obter um analisador de requisições DNS e extrair as informações desejadas.

Fui!