アカウントにログインしたユーザーがどの認証方式を使用しているかを確認する方法はありますか?
誰かがキーファイルの代わりにパスワードを使用している場合は、ログイン後に警告を印刷したいと思います。
もちろん、1つの解決策はSSHログをチェックすることです。しかし、これを行うより良い方法はありますか?ログの検索は、ログのサイズとこの情報の収集に使用する方法によっては、パフォーマンスに影響を与える可能性があります。
私たちはSUSEとUbuntuを使用しています。
答え1
キー項目にディレクティブを追加して、authorized_keys
そのキーを使用するセッション環境に値を追加できます。これはから来たものですSSHD文書:
環境="名前=値"
このキーを使用してログインするときに、この文字列が環境に追加されることを指定します。このように設定された環境変数は、他のデフォルト環境値をオーバーライドします。このタイプの複数のオプションが許可されます。環境処理はデフォルトで無効になっており、通過しました。ユーザーエクスペリエンスを許可オプション。
したがって、authorized_keysエントリは次のようになります。
environment="SSHKEY=bob_key" ssh-rsa AAAAB3NzaC...iQ== bob@bobspc
ユーザーの .bashrc が実行されるときに SSHKEY 変数が存在するかどうかは、その特定のキーが認証に使用されるかどうかを示します。
これは明らかに普遍的な解決策ではありません。このディレクティブを使用して、すべてのAuthorized_keysファイルのすべてのキーエントリをコメントアウトする必要があります。ユーザーに自分のファイル.bashrc
、authorized_keys
または.ssh/rc
ファイルを変更する権限がある場合は、確認を中止できます。
答え2
シェルは、ユーザーが認証する方法を知らないか気にしません。とsshd
で設定すると、メッセージは設定可能な場所(syslog / rsyslog)に書き込まれるため、これらのログ(存在する場合)を確認してユーザー認証方法を確認する必要があります。SyslogFacility
LogLevel
次のログを見てください。
... sshd[...]: Accepted keyboard-interactive/pam for $USER from ... port ...
または
... sshd[...]: Accepted publickey for $USER from ... port ...
パスワード(キーボードインタラクション)を使用するか、キー認証を使用するかを決定します。
sshdログを集計し、最近パスワードでログインしたユーザーに別々のレポート(電子メールを介して?)を送信することを検討できます。
答え3
OpenSSHの最新バージョン(私の意見では7.6から始まる)では設定オプションを受け入れますExposeAuthenticationMethods
。に設定すると、pam-and-env
使用された認証方法に関する情報を含む環境変数SSH_USER_AUTHセットを取得できます。多段階認証を使用している場合、これには複数の値を含めることができます。デフォルト設定(以前のOpenSSHバージョンと一致)はですnever
。つまり、sshd_configを変更できない場合、または以前のOpenSSHバージョンを実行している場合は、ログスキャンまたは他の方法を使用する必要があります。