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
)。