syslog.confの見直しといっても、それほど多いわけではない。むしろ最近のUNIXでは、デフォルトの設定でも問題ない場合がほとんどだ。しかし、それでもUNIXの種類によっては、セキュリティ監査などを行ううえで必要となる設定がされていないこともあるので、設定がない場合は追加することをお勧めする。
システムによっては、認証に関するauth(authpriv)のログがファイルに保存されない。auth(authpriv)では、だれがいつログインを試みたなどの記録が保存されることから、syslog.confに設定がない場合は追加するようにしよう。
例: facilityがauthおよびauthpriv、priorityがinfo以上のログを/var/log/authlogに保存する。
auth,authpriv.info /var/log/authlog
syslogでは、外部のサーバからネットワーク越しにログを受け取るために、syslogd起動時にデフォルトで514/udpをオープンする。しかし、その514/udpでは、特にアクセス制限が行われていないため、外部の攻撃者が514/udpに対して大量のパケットを送り込むことで、syslogサービスの異常停止(DoS)を狙った攻撃が可能となる。
外部(インターネット)からの514/udpに対するアクセスをブロックしてあればひとまずは回避できるが、念には念をという意味で、サーバ自身で514/udpへのアクセスを制限することをお勧めする。特に、外部からのログを受け取らない場合は、514/udpをオープンする必要はない。
最近のsyslogdには、514/udpを受け取る/受け取らないのオプションが指定可能となっているので指定するとよい。ただし、オプションを変更する場合は、syslogdの再起動が必要となるので、基幹サーバなどの場合は注意が必要となる。
-sは、デフォルトで指定されているが、もし-sがない場合は指定する。 指定する場合、syslogdをいったん停止し、以下を実行する。
# /usr/sbin/syslogd -s
次回起動時も有効にする場合は、
/etc/rc.confに syslogd_flags="-s"
の1行を設定する必要がある。
syslogdをいったん停止し、以下を実行する。
# /usr/sbin/syslogd -t
次回起動時も有効にする場合は、/etc/rc2.d/S74syslog(実体は/etc/init.d/syslog) の以下の1行を変更する。
変更前:
/usr/sbin/syslogd >/dev/msglog 2>&1 &
変更後:
/usr/sbin/syslogd -t >/dev/msglog 2>&1 &
デフォルトでは514/udpをオープンしない。そのため特に変更の必要はないだろう。逆に-rオプションを指定すると、514/udpがオープンされる。
Solarisでは、ログイン認証やsuのログをsyslog経由で出力する変数(SYSLOG)が用意されている。デフォルトではsyslog経由で出力されるが、念のために既存の環境において有効(YESが設定かつコメントアウトされていない)であることを確認しておく。
また、loginでは、SYSLOG_FAILED_LOGINS変数を有効、suでは、SULOG変数も合わせて有効にしておくとよい。
SYSLOG=YES SYSLOG_FAILED_LOGINS=3
SYSLOG=YES SULOG=/var/adm/sulog
両者ともFacilityがauth、Priorityがnotice、critのログが出力される。
loginのSYSLOG_FAILED_LOGINS変数には、ログインの失敗回数の閾(しきい)値(上記の場合は3回)を設定することで、閾値を超えた場合にログに残すように設定できる。ただし、これをログに残す場合は、あらかじめ空の/var/adm/loginlogファイルを作成しておく必要がある*5。
# touch /var/adm/loginlog # chmod 600 /var/adm/loginlog
/var/adm/sulogファイルも同様に作成しておく。
# touch /var/adm/sulog # chmod 600 /var/adm/sulog
telnetなどで、3回ログインに失敗すると、/var/adm/loginlogに以下のようなメッセージがたて続けに出力される。
kimu:/dev/pts/2:Thu Jan 13 20:52:24 2004 kimu:/dev/pts/2:Thu Jan 13 20:52:33 2004 kimu:/dev/pts/2:Thu Jan 13 20:52:39 2004
また、/var/adm/sulogには、suを実行するたびに、以下のようなログが記録される。いつだれがsuを実行したのかが分かる。
SU 01/13 20:39 + pts/4 kimu-root SU 01/13 20:44 + pts/1 yasushi-root
/etc/syslog.confの内容を実際に反映させたら、あとは本当に正しく反映されているかどうかを確認する必要がある。
ログに出力されるのをじっと待つという手もあるが、そのために時間をつぶすのもばからしいので、そういった場合はloggerコマンドを利用するとよい。
loggerコマンドは、多くのUNIXで標準インストールされており、任意のfacilityとpriorityを指定してログの出力を確認することができる。
loggerコマンドの書式 |
logger[オプション]出力するメッセージ |
loggerコマンドの主なオプション |
指定する内容
|
-f file | メッセージを指定したファイルに出力する。指定しない場合は、/etc/syslog.confの設定値が適用される。 |
-p pri | 指定したfacilityとpriorityに記録する。facilityとpriorityは、ドット(.)で区切る。 |
例:facilityがkern、priorityがinfoログレベルにメッセージ「koreha test desu」の文字列を出力する。
% logger -p kern.info "koreha test desu"
kern.infoのデフォルトの出力先には、以下のようなログが記録される。
Jan 13 00:27:11 atmarkit kimu: koreha test desu
今回は、syslogの基本と現状確認について説明した。次回は、ログサーバへの転送やセキュリティを考慮したsyslogソフトウェアの導入について説明する。
Copyright © ITmedia, Inc. All Rights Reserved.