Chapitre 23. Enregistrement des requêtes DNS à l'aide de dnstap dans RHEL

En tant qu'administrateur réseau, vous pouvez enregistrer les détails du système de noms de domaine (DNS) pour analyser les schémas de trafic DNS, surveiller les performances du serveur DNS et résoudre les problèmes DNS. Si vous souhaitez disposer d'un moyen avancé de surveiller et d'enregistrer les détails des requêtes de noms entrantes, utilisez l'interface dnstap qui enregistre les messages envoyés par le service named. Vous pouvez capturer et enregistrer les requêtes DNS pour collecter des informations sur les sites web ou les adresses IP.

Conditions préalables

  • Mettre à jour les paquets BIND vers la version bind-9.16.15-3 ou ultérieure, qui contient l'interface dnstap.
Avertissement

Si une version de BIND est déjà installée et fonctionne, l'ajout d'une nouvelle version de BIND écrasera la version existante.

Procédure

  1. Activez dnstap et le fichier cible en modifiant le fichier /etc/named.conf dans le bloc options:

    options
    {
    # …
    
    dnstap { all; }; # Configure filter
    dnstap-output file "/var/named/data/dnstap.bin" versions 2;
    
    # …
    };
    # end of options
  2. Pour spécifier les types de trafic DNS que vous souhaitez enregistrer, ajoutez des filtres dnstap au bloc dnstap dans le fichier /etc/named.conf. Vous pouvez utiliser les filtres suivants :

    • auth - Réponse ou réponse d'une zone faisant autorité.
    • client - Requête ou réponse interne du client.
    • forwarder - Requête transmise ou réponse de sa part.
    • resolver - Requête ou réponse de résolution itérative.
    • update - Demandes de mise à jour dynamique de la zone.
    • all - N'importe laquelle des options ci-dessus.
    • query ou response - Si vous ne spécifiez pas de mot-clé query ou response, dnstap enregistre les deux.
    Note

    Le filtre dnstap contient plusieurs définitions délimitées par un ; dans le bloc dnstap {} avec la syntaxe suivante : dnstap { ( all | auth | client | forwarder | resolver | update ) [ ( query | response ) ]; …​ };

  3. Pour personnaliser le comportement de l'utilitaire dnstap sur les paquets enregistrés, modifiez l'option dnstap-output en fournissant des paramètres supplémentaires, comme suit :

    • size (illimité | <size>) - Active le renouvellement automatique du fichier dnstap lorsque sa taille atteint la limite spécifiée.
    • versions (illimité | <integer>) - Spécifiez le nombre de fichiers roulés automatiquement à conserver.
    • suffix (incrément | horodatage ) - Choisissez la convention de nommage pour les fichiers déployés. Par défaut, l'incrément commence par .0. Vous pouvez également utiliser l'horodatage UNIX en définissant la valeur timestamp.

      L'exemple suivant demande uniquement les réponses de auth, les requêtes de client et à la fois les requêtes et les réponses de la dynamique updates:

      Example:
      
      dnstap {auth response; client query; update;};
  4. Pour appliquer vos modifications, redémarrez le service named:

    # systemctl restart named.service
  5. Configurer un déploiement périodique pour les journaux actifs

    Dans l'exemple suivant, le planificateur cron exécute le contenu du script édité par l'utilisateur une fois par jour. L'option roll avec la valeur 3 spécifie que dnstap peut créer jusqu'à trois fichiers journaux de sauvegarde. La valeur 3 remplace le paramètre version de la variable dnstap-output et limite le nombre de fichiers journaux de sauvegarde à trois. En outre, le fichier journal binaire est déplacé dans un autre répertoire et renommé, et il n'atteint jamais le suffixe .2, même si trois fichiers journaux de sauvegarde existent déjà. Vous pouvez ignorer cette étape si le roulement automatique des journaux binaires en fonction de la taille limite est suffisant.

    Example:
    
    sudoedit /etc/cron.daily/dnstap
    
    #!/bin/sh
    rndc dnstap -roll 3
    mv /var/named/data/dnstap.bin.1 /var/log/named/dnstap/dnstap-$(date -I).bin
    
    # use dnstap-read to analyze saved logs
    sudo chmod a+x /etc/cron.daily/dnstap
  6. L'utilitaire dnstap-read permet de traiter et d'analyser les journaux dans un format lisible par l'homme :

    Dans l'exemple suivant, l'utilitaire dnstap-read imprime la sortie au format de fichier YAML.

    Example:
    
    dnstap-read -y [file-name]