/etc/ssh/sshd_config には、ログのファシリティ(要はカテゴリ)とプライオリティを指定する設定項目がある。
#SyslogFacility AUTH SyslogFacility AUTHPRIV #LogLevel INFO LogLevel VERBOSE
このファシリティ、デフォルトでわざわざAUTHをコメントアウトしてAUTHPRIVにしてあるので、この2つって何の違いがあるのかなー?と調べてみた。(LogLevelをINFOからVERBOSEにしてあるのは、なんでログイン出来ないのか?という原因を探るときに、VERBOSEくらいログ出てる方が便利だから、私が自分で変えた)
# man 3 syslog LOG_AUTH セキュリティ/認証 メッセージ (非推奨。代わりに LOG_AUTH-PRIV を使用すること) LOG_AUTHPRIV セキュリティ/認証 メッセージ (プライベート)
とあるし、
# man 5 rsyslog.conf
を見ても "The keyword "security (same as auth)" should not be used anymore and mark is only for internal use and therefore should not be used in applications."とあるので、どうやらsyslogやrsyslog的にはAUTHは非推奨な模様。(http://unix.stackexchange.com/questions/59525/difference-between-authpriv-and-auth にもそんなようなことが書いてある)
各ログの吐き出し先を指定している /etc/rsyslog.conf のデフォルト設定も、下記のように「AUTHPRIVのすべての全プライオリティを /var/log/secure に吐き出す」としていて、AUTHについては何もしていない。
# vi /etc/rsyslog.conf # The authpriv file has restricted access. authpriv.* /var/log/secure
じゃあ単にファシリティ名としてAUTHはもう使わないでね、これからはAUTHPRIV使ってね、別にどっち使っても出力内容は変わらないけどね、という話なのかなと思ったけど、念のため確認。AUTHにしたときと、AUTHPRIVにしたときで、 /var/log/secure に吐き出される中身を比較してみた。
- ファシリティがAUTHPRIVで、プライオリティ(ログレベル)がVERBOSEのときに鍵認証に成功したログ
Aug 21 11:09:47 ホスト名 sshd[13220]: Set /proc/self/oom_score_adj to 0 Aug 21 11:09:47 ホスト名 sshd[13220]: Connection from 接続元のIPアドレス port 42697 Aug 21 11:09:47 ホスト名 sshd[13220]: Found matching RSA key: 43:9f:12:09:60:5b:ea:de:26:3d:6d:03:db:34:22:58 Aug 21 11:09:47 ホスト名 sshd[13221]: Postponed publickey for ログインユーザ名 from 接続元のIPアドレス port 42697 ssh2 Aug 21 11:09:47 ホスト名 sshd[13220]: Found matching RSA key: 43:9f:12:09:60:5b:ea:de:26:3d:6d:03:db:34:22:58 Aug 21 11:09:47 ホスト名 sshd[13220]: Accepted publickey for ログインユーザ名 from 接続元のIPアドレス port 42697 ssh2 Aug 21 11:09:47 ホスト名 sshd[13220]: User child is on pid 13222
- ファシリティがAUTHで、プライオリティ(ログレベル)がVERBOSEのときに鍵認証に成功したログ
Aug 21 11:11:24 ホスト名 sshd[13274]: Set /proc/self/oom_score_adj to 0 Aug 21 11:11:24 ホスト名 sshd[13274]: Connection from 接続元のIPアドレス port 57068 Aug 21 11:11:25 ホスト名 sshd[13274]: Found matching RSA key: 43:9f:12:09:60:5b:ea:de:26:3d:6d:03:db:34:22:58 Aug 21 11:11:25 ホスト名 sshd[13275]: Postponed publickey for ログインユーザ名 from 接続元のIPアドレス port 57068 ssh2 Aug 21 11:11:25 ホスト名 sshd[13274]: Found matching RSA key: 43:9f:12:09:60:5b:ea:de:26:3d:6d:03:db:34:22:58 Aug 21 11:11:25 ホスト名 sshd[13274]: Accepted publickey for ログインユーザ名 from 接続元のIPアドレス port 57068 ssh2 Aug 21 11:11:25 ホスト名 sshd[13274]: User child is on pid 13276
上記のように、鍵認証でログイン成功時はAUTHもAUTHPRIVも差はなかった。ではパスワード認証の失敗時はどうだろう?
- ファシリティがAUTHPRIVで、プライオリティ(ログレベル)がVERBOSEのときにパスワード認証で失敗→失敗→成功したログ
Aug 21 11:33:06 ホスト名 sshd[13521]: Set /proc/self/oom_score_adj to 0 Aug 21 11:33:06 ホスト名 sshd[13521]: Connection from 接続元のIPアドレス port 30194 Aug 21 11:33:11 ホスト名 sshd[13521]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=接続元のドメイン名 user=ログインユーザ名 Aug 21 11:33:13 ホスト名 sshd[13521]: Failed password for ログインユーザ名 from 接続元のIPアドレス port 30194 ssh2 Aug 21 11:33:17 ホスト名 sshd[13521]: Failed password for ログインユーザ名 from 接続元のIPアドレス port 30194 ssh2 Aug 21 11:33:22 ホスト名 sshd[13521]: Accepted password for ログインユーザ名 from 接続元のIPアドレス port 30194 ssh2 Aug 21 11:33:22 ホスト名 sshd[13521]: pam_unix(sshd:session): session opened for user ログインユーザ名 by (uid=0) Aug 21 11:33:22 ホスト名 sshd[13521]: User child is on pid 13523
- ファシリティがAUTHで、プライオリティ(ログレベル)がVERBOSEのときにパスワード認証で失敗→失敗→成功したログ
Aug 21 11:42:14 ホスト名 sshd[13581]: Set /proc/self/oom_score_adj to 0 Aug 21 11:42:14 ホスト名 sshd[13581]: Connection from 接続元のIPアドレス port 22138 Aug 21 11:42:20 ホスト名 sshd[13581]: Failed password for ログインユーザ名 from 接続元のIPアドレス port 22138 ssh2 Aug 21 11:42:24 ホスト名 sshd[13581]: Failed password for ログインユーザ名 from 接続元のIPアドレス port 22138 ssh2 Aug 21 11:42:27 ホスト名 sshd[13581]: Accepted password for ログインユーザ名 from 接続元のIPアドレス port 22138 ssh2 Aug 21 11:42:27 ホスト名 sshd[13581]: User child is on pid 13583
おおおおお、AUTHPRIVの方が若干出力されるログが多い!ファシリティの名前がAUTHからAUTHPRIVに変わったところで、ログの中身変わるわけでもないだろう、と思ってたけど違ったー。
という訳で、sshd_configのAUTHとAUTHPRIVってどっちにすればいいの?と悩んだら、AUTH非推奨だし、AUTHPRIVの方がログが多いしで、AUTHPRIVにすべし!ちゃんと違いがあるんだね。