Unix PAMサブシステムのSSHサーバー上のすべてのユーザーに2FAを適用する方法はありますか?

Unix PAMサブシステムのSSHサーバー上のすべてのユーザーに2FAを適用する方法はありますか?

Unix PAMサブシステムのSSHサーバー上のすべてのユーザーに対して2段階認証(2FA)を実行する方法はありますか?

答え1

私はあなたのような名前のないUNIXシステムにアクセスできないので、ここで説明するソリューションをあなたの状況に合わせて調整する必要があります。 (特定の情報を追加するには、この回答を自由に編集してください。)

これPAMサブシステム認証プロセスに他のモジュールを含めることができます。条項の一つGoogle OTP (Microsoft製品などの互換製品も同様です。)

sudo始める前にルートセッションが確立されていることを確認し、ログインし続けることができます(そして他の接続が利用可能であることを確認する前に閉じないでくださいsu)。

以下は、Debian 12(「Bookworm」)のインストールと設定プロセスです。このプロセスにroot全体的に従う必要があるので、シェルを入手するsudo -sことから始めましょう。root

sudo -s

apt update
apt install libpam-google-authenticator

cp -p /etc/pam.d/common-auth{,.$(date +'%Y-%m-%d')}
echo 'auth required pam_google_authenticator.so nullok echo_verification_code' >>/etc/pam.d/common-auth

今編集/etc/ssh/sshd_configいいえ ssh_config)この行を追加または編集します。追加するにはすぐ下に配置してくださいUsePAM yes

cp -p /etc/ssh/sshd_config{,.$(date +'%Y-%m-%d')}
vi /etc/ssh/sshd_config    # or nano, or any preferred editor

ChallengeResponseAuthentication yes
KbdInteractiveAuthentication yes

そして再起動sshd

systemctl restart sshd

次に、一般ユーザーとしてログインし、認証者を設定します。

google-authenticator

   Do you want authentication tokens to be time-based (y/n) y
   Warning: pasting the following URL into your browser exposes the OTP secret to Google:
     https://www.google.com/chart?...secret...stuff...

テキスト端末または生成されたWebリンクをクリックすると、QRコードが表示されます。通常どおり、オーセンティケータアプリでキャプチャします。

   Your new secret key is: 4JD3xxxxxxxxxxxxxxxxxxH7EE
   Enter code from app (-1 to skip): xxxxxx
   Code confirmed
   Your emergency scratch codes are:

   Do you want me to update your "/home/{user}/.google_authenticator" file? (y/n) y
   Do you want to disallow multiple uses of the same authentication token? (y/n) y
   By default […] This will permit for a time skew of up to 4 minutes
   between client and server. Do you want to do so? (y/n) n
   Do you want to enable rate-limiting? (y/n) y

今テストしてみてください。うまくいけばよかったです。そうでない場合は、回復して/etc/pam.d/common-authもう一度/etc/ssh/sshd_configやり直してください。

PAM構成エントリにこのオプションが含まれているため、nullokユーザーは認証設定を回避することを選択できます。削除すると必要な値になります。このオプションを削除すると、を含むすべてのユーザーアカウントに影響を与えるため、注意してくださいroot。他のオプションのマニュアルをお読みください(man pam_google_authenticatorおよび参照man google-authenticator)。

関連情報