Bind9でCC TLDを構成しました。クエリログも正常に構成しました。しかし、クエリ応答のロギングを行うことはできません。
クエリログ用に構成した内容を確認してください。
logging {
channel queries_file {
file "/var/named/chroot/var/log/named/queries.log" versions 10 size 10G;
severity dynamic;
print-category yes;
print-severity yes;
print-time yes;
};
category queries { queries_file; };
};
このスクリプトは、外部からのクエリのみをログに記録します。
これらのリクエストに対するサーバーの応答をログに記録するにはどうすればよいですか。
BINDには、logging
ディレクティブを使用してクエリの回答をログに記録するための規定はありません。
さらに、プライバシーに関する考慮事項は別として、DNSサービスがファイルではなくリモートでログに記録する方が効率的です。
多くの場合、セキュリティ分析のためにDNSクエリをキャプチャ/盗聴するために dnscap を実行しています。
dnscapは、DNSトラフィック用に特別に設計されたネットワークキャプチャユーティリティです。バイナリデータをpcap(3)形式で生成します。このユーティリティはtcpdump(1)に似ていますが、DNSトランザクションとプロトコルオプションに合わせて調整された多くの機能を備えています。
dnstap と呼ばれるキャプチャ/ロギング機能もありますが、これは特定のバージョンのBINDにのみ存在し、BINDの最後のバージョン(現時点では9.11)の後に公式に常に含まれているようです。いくつかのディストリビューションではまだ採用されていないため、BINDのコンパイルが必要です。
これはBINDと統合されており、dnscap
よりもリソースへの負担が少ないため、より興味深いものです。
dnstapは、構造化されたデータをシリアル化するメカニズムであるプロトコルバッファと共に、DNSサーバー用の柔軟なバイナリログ形式を導入するソリューションです。 Robert Edmondsはdnstapのアイデアを持っていて、2つの特定の使用例を念頭に置いて最初の実装を作成しました。
- 同期I/Oのボトルネックとメッセージのフォーマットを排除することにより、クエリロギングを高速化します。
- パッシブDNSのパケットではなくメッセージ全体をキャプチャすることにより、複雑な状態の再構築を回避します
options {
dnstap { all; };
// dnstap { auth; resolver query; resolver response; };
/* where to capture to: file or unix (socket) */
// dnstap-output file "/tmp/named.tap";
dnstap-output unix "/var/run/dnstap.sock";
dnstap-identity "tiggr";
dnstap-version "bind-9.11.2";
};