次のページへシステムのログをつかさどるsyslogdログには、アプリケーションが独自に出力するものと、syslogdを利用して出力するものの2種類があります。独自のログを出力する代表的なアプリケーションにはApacheやSquid、Sambaなどがあります。独自のログ設定を持つアプリケーションに関してはアプリケーションのマニュアルなどを読んでいただくとして、ほとんどのアプリケーションはsyslogdを利用してログを出力しています。以後は、syslogdを利用したログについて説明します(注)。注:LinuxおよびUNIXでsyslogdがインストールされていないことは考えにくいため、特にインストール方法については言及しません。後述するlogrotateに関しても同様です。Linuxでは、主なログの出力先は/var/logディレクトリです。ディレクトリ内を確認すると分かりますが、前述したようにここには複数のファイルが存在します。この設定を行うファイルが/etc/syslog.confです。syslog.confのフォーマットsyslog.confの書式は、スペースあるいはタブで分けられた2つのフィールド「selector」と「action」で構成されています(フィールドを分けるための空白はOSによって異なります。マニュアルで確認してください)。取得したログの出力先セレクタ(selector)selectorは「facility」と「priority」(label)を「.」(ピリオド)で接続します。特定のactionに対して複数のselectorを指定したい場合は、「;」(セミコロン)で接続します。facility.priority{;facility.priority}取得する情報の分類.どのレベルから出力ファシリティ(facility)facilityはログの分類に当たるものです。syslogdを利用するプログラムは、「このログはこのfacilityに所属している」という情報をsyslogdに渡しています。syslogdの設定を行うことで、facilityに応じて扱い方を変更できます。facility対象のログauth(security)認証サービスのメッセージ(現在はauthprivが推奨されている)authpriv認証サービス(カテゴリはauthと同じ。authとは出力結果が異なる)croncronのメッセージdaemonデーモンのメッセージkernカーネルのメッセージlprプリンタサービスのメッセージmailメールサービスのメッセージnewsニュースサービスのメッセージsyslogsyslogのメッセージuserユーザープロセスのメッセージuucpuucp転送を行うプログラムのメッセージlocal0〜7アプリケーションに依存するfacilityで指定できるキーワード複数のfacilityを指定したい場合は「,」(カンマ)で接続して、mail,ftp.warnのように書くこともできます。local0からlocal7は、特定のプログラムが所属するfacilityを既存のものと分けたいときに利用します。Linux7.3の/etc/xinetd.confの内容ですが、facilityがauthprivで設定されています。スーパーサーバ経由で動作するサービスはfacilityがauthprivということです。/etc/xinetd.d例えば、特定のサービスをlocal0のfacilityにするには/etc/xinetd.d下の設定ファイルに以下の記述を追加します。telnetの例を挙げます。←追加}設定ファイルの編集後、xinetdを再起動させればtelnetのログがlocal0のfacilityで出力されます。AUTHPRIVの記述があります。この「AUTHPRIV」の記述をほかのfacilityに変更すればよいのです。プライオリティ(priority)priorityは、プログラムが出力するメッセージのうち、ログのレベルの重要度を設定します。下になるほど重要度が高い通常の設定を行うと、指定したpriority以上のログが出力されます。「err」を指定すればcrit、alert、emergのレベルの出力もされます。重要度の低いpriorityを選択すればするほど、出力されるメッセージは多くなります。逆に、指定したpriorityよりも重要度の低いメッセージのみを出力させたい場合は、mail.*;mail.!warnのように記述します。この設定では、メールに関するメッセージのdebugとinfoとnoticeが出力されます(ここでの「*」はすべてのメッセージの意味)。特定のpriorityのみを指定することも可能です。それには「=」を使用します。kernel.=warnのように記述すると、カーネルの警告メッセージだけが出力されます。これに「!」を合わせることで、特定のpriorityを除いたメッセージを出力することも可能です。これらのpriorityの指定以外に、「none」を利用するとそのfacirityの出力を行いません。内容kernel.=warnfacilityがkernelでpriorityがwarnのみ出力mail.*;mail.!=critfacilityがmailでpriorityがcrit以外のメッセージを出力.;daemon.nonefacilityがdaemon以外の全メッセージを出力どのfacilityをどのpriorityにするかは、何を監視したいかによります。重要なデータを見逃さないように、必要なデータが取得できるpriorityに変更しましょう。アクション(action)actionには、selectorで指定したメッセージをどこに、あるいはどのように出力するかを設定します。具体的には、どのファイルに出力するか(ファイルのパスを記述する)ほかのプログラムに渡す(「|」を利用)他ホストに渡す(「@ホスト名」)ユーザーのコンソールに表示(システムに登録されているユーザー名)になります。出力先のファイルとして/dev/consoleを指定することで、コンソールに表示させることも可能です。actionの設定例は以下のとおりです。以上の内容を踏まえて、デフォルトのsyslog.conf(注)を見てみましょう。Linux7.3のsyslog.confです。コメント行は除いています。以前、ログを数カ月から数年間保存することを法制化しようという動きがありました。これは不正アクセスの情報を残すためでしたが、まだ実際の法律としては存在していません。ログを残すことがネットワーク管理者の重要な作業の1つであることは間違いありません。不正アクセスを行う者にとって、ログには自分を特定する手掛かりとなる情報が記録されます。ログを削除しようとするでしょう。これに対処するために、異なるホストをログサーバとして運用する方法があります。前述したように、syslog.confの設定でactionに@ホスト名(あるいはIPアドレス)を入力すると、そのホストにログを転送することができます。ログを受け取るホスト側でも設定が必要です。ログサーバとしてホストを設定するには、syslogdに-rオプションを指定して起動します。-r"のように追記してsyslogdを再起動すれば、ログサーバとして使用できます。各サーバからログサーバにログを転送して一元的に管理するログサーバへ転送されたログは、ログサーバのsyslog.confの内容に従って処理されます。ここで注意すべき点は、ログサーバのユーザーとパスワードをほかのサーバと同じにしないことと、複数のサーバからログの転送を行うのであれば容量的に十分余裕を持たせておくことです。以上で、syslogdの主な機能については網羅できているはずです。複数のサーバから必要な情報を洗い出す作業を少しでも減らそうとするなら、ログサーバを1台用意して、例えばpriorityがwarn以上のものを1つのファイルに出力するように設定することも可能です。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。