Ubuntuのデスクトップに、多要素認証を導入して、OTPでログインできるようにした。
目次
私の自宅のデスクトップ機は、Ubuntuを使っているのだが、諸事情で多要素認証を導入する必要が出てきた。
Ubuntuのアカウントは、EntraIDなどで管理しているわけではないので、OTP(ワンタイムパスワード)でログインすることにした。
手順は下記の通り。
なお、Ubuntuは、24.04.94 LTSである。
注意点は、GUI、CUI(仮想端末)、SSHでそれぞれ設定が必要になる点である。 そのため、PAMパッケージを導入してOTPを有効にした後、GUI用、CUI用、SSH用で別途設定を行う必要がある。
PAMパッケージを導入する
Google Authenticator用のPAMモジュールを使うと、ubuntuでもOTPを導入できる。
sudo apt upgdate
sudo apt install -y libpam-google-authenticator
認証キーの生成
OTPを設定したいユーザで、次のコマンドを実行する。
google-authenticator
後は、指示に従うと、OTP用のQRコードがターミナル上に表示される。OTP用のスマホアプリ(Google Authenticatorや1Password)でORコードを読めばOTPが登録される。
非常用コード(Emergency scratch codes)は必ず紙や安全な場所にメモしておくこと。
GUIログイン用の設定
/etc/pam.d/gdm-passwordに次の1文を追加する。
追加する場所は、ファイルの先頭(auth requisite pam_nologin.so の直後、または @include common-auth の上)である。
auth required pam_google_authenticator.so nullok
CUI(仮想端末)用の設定
GUI用の設定と、設定先のファイルが異なる以外は同じである。
/etc/pam.d/gdm-passwordに次の1文を追加する。
追加する場所は、ファイルの先頭(auth requisite pam_nologin.so の直後、または @include common-auth の上)である。
auth required pam_google_authenticator.so nullok
SSH用の設定
あまりよろしくないのだが、公開鍵認証ではなく、パスワード認証を使っている。
SSH用の設定では、/etc/pam.d/sshdと/etc/ssh/sshd_configの2つのファイルを編集する。
/etc.pam.d/sshd に auth required pam_google_authenticator.so nullokを追記する。
追記する場所は、ファイルの先頭付近(@include common-auth の上)の上。
auth required pam_google_authenticator.so nullok
/etc/ssh/sshd_configを編集
KbdInteractiveAuthentication yes
Ubuntu 24.04.04LTSの場合、KbdInteractiveAuthenticationがnoになっているので、yesに変更する。