II-21-9. Linuxにおけるシステムログ管理の実際

システムログを管理するsyslogの仕組みや機能、導入と運営管理の方法について解説する。またloggerを使ったシステムログのテストや、swatchを用いたログ管理の自動化方法、これらツールの導入と設定方法などについて説明する。

【学習の要点】

* syslogd(8)は、UNIXドメインソケットまたはINETドメインソケットを通して任意のアプリケーションからのログを読み込み、記録する。

* syslogdは、OSの起動時に起動される。任意のアプリケーションは、直接syslogd(8)とソケット通信をする代わりに、ライブラリ関数syslog(3)を使うことができる。

* logger(1)は、syslogd(8)にログを送信するシェルコマンドである。

図II-21-9. syslogを用いたログの一元管理

 

【解説】

1) syslog

* syslogは、LinuxなどUNIX系のOSに限らず、Windowsなど他のOSでも使用できるロギングの仕組みである。

* syslogdとアプリケーションは、UNIXドメインソケットまたはINETドメインソケットで通信する。このため、syslogdはリモートのアプリケーションからもINETドメインソケットを通してログを受け付けることができる。

* 送信側アプリケーションは、直接ソケットを操作する代わりに、syslog(3)ライブラリ関数を用いて容易にログを送信することができる。また、シェルコマンドloggerも用意されており、コマンドラインからも簡単にログを送信することができる。

* ルータやスイッチなどのネットワークデバイスは、syslogに対応しているものが多い。通常これらのデバイスは、ログを保存する十分な領域を持たないため、リモートのsyslogdに対してログを送信する。

* syslogdのリモートログ機能を有効に活用すると、ネットワーク上のホスト、デバイスのログを一元的に管理することができる。

2) swatch

* swatchは、syslogが出力するログファイルを監視して、ログがあるパターン(正規表現)にマッチすると、メールで管理者に知らせたり、他のプログラムを呼び出したりする機能を持つ。

* swatchを導入することで、予め怪しいとわかっているログを他のログファイルに切り分けることができる。

3) sudoの例

* 通常、syslogに対応したアプリケーションのマニュアル(例えばmanページ)には、そのアプリケーションが出力するsyslogのファシリティが記述してある。これは設定ファイルなどで変更できることが多い。これらのファシリティに対応するログをどこに出力するかは、syslog側の設定として、/etc/syslog.confにて行なわれる。

* 例えばsudoコマンドは、デフォルトではauthprivファシリティでsyslogに出力する。Cent OSでは、デフォルトでauthprivファシリティへのログは/var/log/secureに出力されるよう、/etc/syslog.confの設定がなされている。

* この仕組みによって、suコマンドでrootユーザとなってシェルコマンドを実行する代わりに、sudoコマンドを使用することで、root権限で実行したすべてのコマンドのログをsyslog経由で出力することができるようになっている。

4) logrotate

logrotateは、溜まったログを定期的にローテート (古いログを削除したり圧縮したりすること) することを目的としたプログラムである。ローテートのタイミングで、ログの内容をメールで送信するなどすることで、不正にログが消去されることに対して対策を講じることができる。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。