bashrcでログインに使用する方法を決定する方法(パスワードとキーファイル)

bashrcでログインに使用する方法を決定する方法(パスワードとキーファイル)

アカウントにログインしたユーザーがどの認証方式を使用しているかを確認する方法はありますか?

誰かがキーファイルの代わりにパスワードを使用している場合は、ログイン後に警告を印刷したいと思います。

もちろん、1つの解決策はSSHログをチェックすることです。しかし、これを行うより良い方法はありますか?ログの検索は、ログのサイズとこの情報の収集に使用する方法によっては、パフォーマンスに影響を与える可能性があります。

私たちはSUSEとUbuntuを使用しています。

答え1

キー項目にディレクティブを追加して、authorized_keysそのキーを使用するセッション環境に値を追加できます。これはから来たものですSSHD文書:

環境="名前=値"
このキーを使用してログインするときに、この文字列が環境に追加されることを指定します。このように設定された環境変数は、他のデフォルト環境値をオーバーライドします。このタイプの複数のオプションが許可されます。環境処理はデフォルトで無効になっており、通過しました。ユーザーエクスペリエンスを許可オプション。

したがって、authorized_keysエントリは次のようになります。

environment="SSHKEY=bob_key" ssh-rsa AAAAB3NzaC...iQ== bob@bobspc

ユーザーの .bashrc が実行されるときに SSHKEY 変数が存在するかどうかは、その特定のキーが認証に使用されるかどうかを示します。

これは明らかに普遍的な解決策ではありません。このディレクティブを使用して、すべてのAuthorized_keysファイルのすべてのキーエントリをコメントアウトする必要があります。ユーザーに自分のファイル.bashrcauthorized_keysまたは.ssh/rcファイルを変更する権限がある場合は、確認を中止できます。

答え2

シェルは、ユーザーが認証する方法を知らないか気にしません。とsshdで設定すると、メッセージは設定可能な場所(syslog / rsyslog)に書き込まれるため、これらのログ(存在する場合)を確認してユーザー認証方法を確認する必要があります。SyslogFacilityLogLevel

次のログを見てください。

... 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バージョンを実行している場合は、ログスキャンまたは他の方法を使用する必要があります。

関連情報