rootユーザーに対して二要素認証を設定するために、Google Authenticatorを使用します。このアプリケーションはすべてのプラットフォームで利用可能で、時間に依存します。したがって、Googleのサービスにアクセスできなくても、時間が同期していれば問題なく動作します。
今回の設定では、通常のユーザーは従来通りパスワードでSSHにログインし、rootユーザーに権限を昇格させる際に、su -
コマンドでパスワードを入力した後、Google Authenticatorアプリのコードを入力する必要があります。
また、rootユーザーでのSSHログインを禁止し、強制的に二要素認証を使用させるようにします。
1. 必要なパッケージをインストールします:
apt install libpam-google-authenticator
2. 初期設定を行います:
./google-authenticator
2.1 アプリからのコードの入力が求められます。Googleアプリの代わりにFreeOTPを使用することもできます。
2.2 SSHサービスを設定します:
nano /etc/ssh/sshd_config
PermitRootLogin no
UsePAM yes
ChallengeResponseAuthentication yes
設定を反映するため、SSHサービスを再起動します:
systemctl restart ssh
2.3 su -
コマンドでパスワードを入力した後にコードの入力を要求する設定を行います。
以下の行を追加し、ファイルを次のように編集します:
nano /etc/pam.d/su
...
auth sufficient pam_rootok.so
...
auth required pam_unix.so no_warn try_first_pass
auth required pam_google_authenticator.so
...
3. 完了です。 通常のユーザーでログインした後、su
コマンドを使用してrootに切り替える際に、パスワード入力後、アプリのコードを要求されることを確認できます。
追加設定:
3.1 SSH接続時にコードを要求したい場合は、以下の行をファイルに追加します:
nano /etc/pam.d/sshd
...
@include common-auth
...
auth required pam_unix.so no_warn try_first_pass
auth required pam_google_authenticator.so
...
rootユーザーを使用する場合は、SSH設定でログインを許可する必要があります。別のユーザーの場合は、通常のユーザーで次のコマンドを実行し、rootユーザーの設定と同様に行います:
./google-authenticator
No Comments Yet