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/sshdauth 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に変更する。