openSUSE 11.1 で SSH のログを別ファイルに記録する
openSUSE 11.1 では CentOS などとは異なり、デフォルトでは SSH 認証のログが「/var/log/messages」に出力されています。
「/var/log/messages」には他のログなども混ざっているため、SSH の認証ログのみ抽出したいような場合、これでは若干不便です。
という事で、syslog-ng の設定ファイルを修正し、SSH 認証のログを CentOS などと同様に「/var/log/secure」に出力するようにしてみました。
※ ちなみに CentOS の 「/var/log/secure」 は認証関連のログファイルですが、ここではそのうちの SSH 認証時のログのみを設定しています。
sshd_configの修正
まずは「/etc/ssh/sshd_config」を編集します。
# vi /etc/ssh/sshd_config
「Logging」と書いてある行の近くに「SyslogFacility AUTHPRIV」を追加します。
# Logging # obsoletes QuietMode and FascistLogging #SyslogFacility AUTH SyslogFacility AUTHPRIV # <- この行を追加。 #LogLevel INFO
以上の定義を追加後、ファイルを保存したら sshd を再起動します。
# service sshd restart
syslog-ng.conf の修正
次は「/etc/syslog-ng/syslog-ng.conf」を編集します。
# vi /etc/syslog-ng/syslog-ng.conf
filter の定義が並んでいる辺りに、先ほど sshd_config で追加した Facility(AUTHPRIV) 用の filter を定義します。
# ssh filter f_auth { facility(authpriv); };
また、これだけでは messages の方にも SSH のログが出力されてしまうので、そちらを停止するために以下のように messages 用の filter 定義で authpriv を除外するよう変更します。
# not facility に authpriv を追加 filter f_messages { not facility(news, mail, authpriv) and not filter(f_iptables); };
最後に destination で出力ファイルを定義します。
ファイルの後半の destination 定義が並んでいる辺りに、以下の destination を追加します。
# ssh destination auth { file("/var/log/secure"); }; log { source(src); filter(f_auth); destination(auth); };
ファイルを保存したら syslog-ng を再起動します。
# service syslog restart
これで CentOS などと同じく、「/var/log/secure」に SSH ログインのログが出力されるようになりました。