Red Hat Training

A Red Hat training course is available for RHEL 8

第26章 RHEL での dnstap を使用した DNS クエリーの記録

ネットワーク管理者は、ドメインネームシステム (DNS) の詳細を記録して、DNS トラフィックパターンの分析、DNS サーバーのパフォーマンスの監視、DNS 問題のトラブルシューティングを行うことができます。受信する名前クエリーの詳細を監視してログに記録する高度な方法が必要な場合は、named サービスから送信されたメッセージを記録する dnstap インターフェイスを使用します。DNS クエリーをキャプチャーおよび記録して、Web サイトまたは IP アドレスに関する情報を収集できます。

前提条件

  • BIND パッケージをバージョン bind-9.11.26-2 以降にアップグレードします。
警告

BIND バージョンがすでにインストールされ、実行されている場合、新しいバージョンの BIND を追加すると、既存のバージョンが上書きされます。

手順

  1. /etc/named.conf ファイルの options ブロックを編集して、dnstap とターゲットファイルを有効にします。

    options
    {
    # …
    
    dnstap { all; }; # Configure filter
    dnstap-output file "/var/named/data/dnstap.bin";
    
    # …
    };
    # end of options
  2. ログに記録する DNS トラフィックのタイプを指定するには、/etc/named.conf ファイルの dnstap ブロックに dnstap フィルターを追加します。次のフィルターを使用できます。

    • auth: 権威ゾーンの応答または回答。
    • client: 内部クライアントクエリーまたは回答。
    • forwarder: 転送クエリーまたは応答。
    • resolver: 反復的解決クエリーまたは応答。
    • update: 動的ゾーン更新要求。
    • all: 上記のオプションのいずれか。
    • query または response: query または response キーワードを指定しない場合、dnstap は両方を記録します。

      注記

      dnstap フィルターでは、dnstap {} ブロック内に ; で区切った複数の定義を含めます。次の構文を使用してください。dnstap { ( all | auth | client | forwarder | resolver | update ) [ ( query | response ) ]; …​ };

  3. 変更を適用するために、named サービスを再起動します。

    # systemctl restart named.service
  4. アクティブなログの定期的なロールアウトを設定します。

    次の例では、cron スケジューラーは、ユーザーが編集したスクリプトの内容を 1 日に 1 回実行します。roll オプションに値 3 指定し、dnstap が最大 3 つのバックアップログファイルを作成できるようにしています。この値 3 は、dnstap-output 変数の version パラメーターをオーバーライドし、バックアップログファイルの数を 3 に制限します。また、バイナリーログファイルは別のディレクトリーに移動されて名前が変更されます。3 つのバックアップログファイルがすでに存在する場合でも、ファイルの接尾辞が .2 に達することはありません。サイズ制限に基づくバイナリーログの自動ローリングで十分な場合は、このステップを省略できます。

    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
  5. dnstap-read ユーティリティーを使用して、人間が判読できる形式でログを処理および分析します。

    次の例では、dnstap-read ユーティリティーは出力を YAML ファイル形式で出力します。

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