web-dev-qa-db-ja.com

認証で使用された公開鍵をOpenSSHに記録させることは可能ですか?

私は、複数の異なるユーザーが単一のアカウントにログインすることを許可されている運用システムを持っています。運用サーバーには個人アカウントがないため、アカウントはアプリケーション用であり、個人用ではありません。

監査の目的で、誰がいつログインしたかを知ることができるようにしたいと思います。SSHキーを使用してログインしているので、それを追跡することは理にかなっています(追跡する他の識別子がないため)。

SSHがユーザーを認証すると、ユーザー名がシステムのセキュリティログに記録されますが、ログインで使用された承認済みの公開鍵は記録されません。使用されている公開鍵もOpenSSHに報告させることは可能ですか?それとも、そのキーに関連付けられたコメントだけですか?

使用しているオペレーティングシステムはCentOS 5.6ですが、他のオペレーティングシステムで可能かどうかも知りたいです。

27
Guss

/ 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

特定の公開鍵のフィンガープリントを取得します。

33
user9517

人々が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
3
Willem
0
yaronf

sshd_configLogLevelパラメータをいじってみてください。詳細については、man sshd_configを参照してください

0
Sven