BINDクエリログから特定のクライアントを除外できますか?

BINDクエリログから特定のクライアントを除外できますか?

いくつかのBIND DNSサーバーをシャットダウンすることを検討しています。どのクライアントがこのサーバーに接続しているかを確認するためにクエリログをオンにしました。ほとんどの項目は3人の既知の犯人から出てきます。この記録をなくしたいです。 BIND内でこれを行う方法はありますか?

in-BINDメソッドが見つからなかったので、私が考えたnot-within-BINDメソッドは、チャネルステートメントのファイルをファイルではなくソケットにすることでした。次に、ファイルに書き込む前に、対応するソケットとフィルタからスクリプトを読み込みます。

    channel queries {
            file "/var/adm/named/querylogsocket" versions 7;
            print-time yes;
            print-category yes;
            print-severity yes;
            severity info;
    };

これが実現可能なアプローチですか?

ベストアンサー1

ログフィルタリングと設定変更の表示という2つの方法があります。 1つは簡単で、もう1つは難しく、エラーが発生しやすいです。

どちらもログ出力を減らしません。

ログフィルタリング

Bind9が上位3つの原因に応答し続けたいのですが、他のクエリと回答にのみ興味がある場合は、これらのBind9句、宣言、およびオプションのいずれも役に立ちません。

すべてのBind9バージョンで(私は1つあります現在のデータベースキーワード)重大度によるフィルタリングのみを提供するため、現在のところ、住所ごとのオプションのログフィルタリングはありません。

Bind9 で始まる多くのステートメントは、必要なオプションのロギングallow-出力ではなく、プロトコルに直接影響します。

この時点で最も速い(常に最善ではないが)アプローチは、Unixパイプを使用して3つの不要なIP /ホスト名アドレスをフィルタリングすることです。

cd /var/log/named
cat query-errors | \
    grep -v 1.1.1.1 | \
    grep -v 1.1.1.2 | \
    grep -v 1.1.1.3 | \
    <your-log-analysis-program>

1.1.1.x例の一部を不要な最大の3つのアドレスに置き換えます。

この-vオプションは、不要な出力をフィルタリングして、ログアナライザに表示したいものだけを表示できるようにします。

構成変更の表示

named.confまたは、設定を変更して現在のビューを2つのビューに分割することもできます。

ビュー宣言がすでにない場合、Bindではない人にとってはこれが少し難しくなります。

ビューを分割するには、named.conf必須句を含む(または含まれているファイルのいずれか)を編集しますview

節全体と中括弧viewペア内のすべての文をコピーします。

新しく複製された2番目のビューの名前を別の名前に変更します。ビュー名に "_original"サフィックスを追加するだけです。

最初のビューセクションに戻ります。 (アドレス一致が最初の一致順序で行われるので重要です。)

match-client最初のビュー句の中に別のステートメントを追加します。

view red {
    match-clients {
        1.1.1.1; 1.1.1.2; 1.1.1.3;
    };
...

これで、簡単に検索できるさまざまなビュー名を含む行を含むログファイルがあります。

結論として

今、私はまだBind9を介して特定のビューやアドレスのセットを記録しない必要性を解決していないことを知っています。

おすすめ記事