私は、複数の異なるユーザーが単一のアカウントにログインすることを許可されている運用システムを持っています。運用サーバーには個人アカウントがないため、アカウントはアプリケーション用であり、個人用ではありません。
監査の目的で、誰がいつログインしたかを知ることができるようにしたいと思います。SSHキーを使用してログインしているので、それを追跡することは理にかなっています(追跡する他の識別子がないため)。
SSHがユーザーを認証すると、ユーザー名がシステムのセキュリティログに記録されますが、ログインで使用された承認済みの公開鍵は記録されません。使用されている公開鍵もOpenSSHに報告させることは可能ですか?それとも、そのキーに関連付けられたコメントだけですか?
使用しているオペレーティングシステムはCentOS 5.6ですが、他のオペレーティングシステムで可能かどうかも知りたいです。
/ etc/sshd/sshd_configでLogLevelをVERBOSEに上げると、ユーザーの認証に使用される公開鍵のフィンガープリントが記録されます。
LogLevel VERBOSE
次に、このようなメッセージが表示されます
Jul 19 11:23:13 centos sshd[13431]: Connection from 192.168.1.104 port 63529
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13432]: Postponed publickey for user from 192.168.1.104 port 63529 ssh2
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13431]: Accepted publickey for user from 192.168.1.104 port 63529 ssh2
使用できます
ssh-keygen -lf /path/to/public_key_file
特定の公開鍵のフィンガープリントを取得します。
人々がssh-agentを使用している場合、これを.bashrcに入れることができます。
SSH_KEY_NAME=$(ssh-add -L | cut -d' ' -f 3 || 'unknown')
if [[ ! $SSH_KEY_NAME ]]; then SSH_KEY_NAME="no agent"; fi
echo `/bin/date` $SSH_KEY_NAME >> ~/.login.log
sshd_config
のLogLevel
パラメータをいじってみてください。詳細については、man sshd_config
を参照してください