xserver
Home クッキー及びWeb ビーコンについて



BINDのロギング機能

BINDのロギング機能

BINDのロギング機能を活用する事で、ネームサーバのログ出力から、より細かな情報を得ることができますので、BINDでDNSを運用している方はきちんとロギング機能を理解しておきましょう




■ロギング機能

BIND には、named.conf に logging ステートメントを記述しておくことでネームサーバのログ出力をより広範に制御することができるようになります。channel で出力先を選択し、category で出力フォーマットとseverity(重要度)を指示しています。named.conf にはデフォルトでは logging ステートメントが記述されていませんが、デフォルトでも logging の機能は設定されており、category と channel 共にデフォルト値が存在します。



 まず、named.conf に何も設定しなかった時のデフォルトのログ設定を以下に記します。unmatched は、どの view にもマッチしなかったメッセージのことで、デフォルトでは、null (ログを出力しない)が指定されています。

logging
   category "unmatched" { "null"; };
   category "default" { "default_syslog"; "default_debug"; };
};

 以下は、標準で用意されているデフォルトのchannel 設定です。channel 指定には、file、syslog、stderr、null のいずれかの指定が必要で、file は指定したファイルにログを出力し、syslog はsyslog に、stderr は標準エラー出力にそれぞれ出力します。

//syslogデーモンに出力する
channel "default_syslog" {
   syslog daemon;
   severity info;
};

//named.runへ出力する
channel "default_debug" {
   file "named.run";
   severity dynamic;
};

//標準エラーに出力する
channel "default_stderr" {
   stderr;
   severity info;
};

//ログを出力しない
channel "null" {
   null;
};


◎ロギングのカテゴリ設定
 default チャンネルが割り当てられていない全てのカテゴリ。
 general 以下のカテゴリに分類されない、その他全てのメッセージ
 database named の内部データベースに関するメッセージ。
 security 要求の承認と拒否に関するメッセージ。
 config 設定ファイルの処理に関するメッセージ。
 resolver 名前解決に関するメッセージ。再帰的に問い合わせへの応答も含む。
 xfer-in 他サーバーから自ホストへのゾーン転送に関するメッセージ。
 xfer-out  自ホストから他サーバーへのゾーン転送に関するメッセージ。
 notify  非同期びゾーン更新通知に関するメッセージ。
 client  クライアントからの要求に関するメッセージ。
 unmatched どのview にもマッチしなかったメッセージ。
 network ネットワークに関するメッセージ。
 upadate  動的更新に関するメッセージ。
 queries 問い合わせのログ。
 dnssec DNSSECとTSIGの処理に関するメッセージ。
 lame-servers 名前解決を試みようとして発見した、間違った設定のサーバーに関するメッセージ。

◎チャンネル設定の書式
file <ファイル名> [ versions <バージョン番号> ] [ size <サイズ指定> ] ;
 syslog <機能分類>;
 stderr;
 null;
  [ severity <重要度>;]
  [ print-category <真偽値>;]
  [ print-severity <真偽値>;]
  [ print-time <真偽値>;]
<機能分類> = kern、user、mail、daemon、auth、syslog、lpr、news、uucp、cron、
          authpriv、ftp、local0~local7
<重要度> = critical、error、warning、notice、info、debug、dynamic
<真偽値> = yes | no
<サイズ指定> = <数値> [ K | M | G }




■ログを格納するディレクトリの作成

 まず、BIND が出力するログを標準の/var/log/messages ではなく、専用のディレクトリを作成し、その中に格納していくこととします。

# mkdir /var/named/log
# chown named.named /var/named/log

■ロギングの基礎

 以下では、BINDに関するログを全て同一ファイルに記録するような設定をしてみます。まず、channel でチャネル名を任意に定義します。ここでは、"default-log"という名前をつけ、そのファイルを、/var/named/log/default.log に出力するように指定しています。"version" は、指定した数字の数だけログを保存するという意味で、named を再起動したり、リロードしたりすることによってログファイルを自動的にローテーションします。ここでは、5 と指定しているのでログ数5つの中でローテーションされます。ログのサイズを指定した場合、ログサイズが最大サイズに達した時点でログの出力を停止します。注意したいのは、指定したサイズに達してもログのローテーションを行わないということです。

 次にcategory の設定を行います。ロギングは、channel を定義したからといってログ機能が動作するわけではなく、category が指定されてはじめてログ出力を行うようになります。以下の例では、"category default "(上記表参照)の出力を、channel の default-log で定義したとおりにログを出力する、という設定になっています。

◎ログを一括して出力する例
logging {
        channel "default-log" {
                file "/var/named/log/default.log" versions 5 size 10M;
                severity debug;
                print-time yes;
                print-severity yes;
                print-category yes;
        };
		
        category default { "default-log"; };
};

最後に、print について解説します。print-time は、時刻を、severity は重要度を出力し、category はログカテゴリの表示・非表示を切り替えます。

Jan 04 15:31:55.463 general: debug 1: zone_timer: zone version.bind/CH: enter

■ロギングの応用例

logging {
        channel "default-log" {
                file "/var/named/log/default.log" versions 3 size 5M;
                severity debug;
                print-time yes;
                print-severity yes;
                print-category yes;
        };
		
        channel "xfer-in-log" {
                file "/var/named/log/xfer-in.log" versions 3 size 5M;
                severity debug;
                print-time yes;
                print-severity yes;
                print-category yes;
        };
		
        channel "xfer-out-log" {
                file "/var/named/log/xfer-out.log" versions 3 size 5M;
                severity debug;
                print-time yes;
                print-severity yes;
                print-category yes;
        };
		
        channel "queries-log" {
                file "/var/named/log/queries.log" versions 3 size 5M;
                severity info;
                print-time yes;
                print-severity yes;
                print-category yes;
        };
		
        category default { 
               "default-log";
               "default_syslog";
               "default_debug";
               "default_stderr";
        };

        category xfer-in { 
               "xfer-in-log";
        };

        category xfer-out { 
               "xfer-out-log";
        };

        category queries { "queries-log"; };
        category lame-servers { null; };
};

 channel や category は複数指定できるため、上記のような設定にして、ログを役割ごとに分散させることもできます。まず、category default では、同じデフォルトでも、ログレベル(severity)の異なるログを出力しています。ひとつめとして、ログレベルがdebug の default-all を指定し、channel "default-log"で定義したログ出力方法に従います。default_syslog とdefault_debug、default_stderr では、BINDの標準出力場所へ出力します。default_syslog ならば、/var/log/messages に出力されます。けれども、default-all よりは詳細なログを出力しません。

 次に、category xfer-in category xfer-out です。category xfer-in では、他サーバーから自ホストへのゾーン転送を行った際のログを出力し、その出力場所として、channel "xfer-in-log" で指定した場所に従います。同様に、自ホストから他サーバーへのゾーン転送に関するメッセージは、channel "xfer-out-log"に従ってログが出力されます。つまり、xfer-in.log と xfer-out.log のふたつのログが作成されることになります。

 category queries は、問い合わせに関するログを出力します。これを指定することで、攻撃元を容易に特定することもできるようになります。ただし、全クエリーを出力するため、指定する場合はサーバーのリソース消費にも気を配りましょう。

 category lame-servers は誤った設定がなされたサーバーに関する逆引きエラーを出力しないように、null を指定しています。







TOPに戻る

Sponcerd Link


Search
 
Web サイト内
Rental Server

【レンタルサーバのXbit】 低価格・高品質のビジネスクオリティー。300メガ1,050円~30分で サービススタート可能!


容量300MB、月額125円、高性能なサーバが日本最大級のバックボーンに直結。
さくらのレンタルサーバ



当サイトはLinux自宅サーバーの構築を目的としたサイトです。
当サイトに関するご意見、ご要望等は、こちらのメールアドレスよりお願いします。
Beginning | Introduction | Installation | Server |
Security | Tips | Related-Sites
Copyright©2003-2006 KORO All Rights Reserved.
総計:
今日:
昨日: