最近、systemd-homed を試してみましたが、その際に Yubikey を FIDO2 デバイスとして登録しました。作成されたホームに対して認証しようとすると、homectl authenticate <user>
Yubikey が正しくアクティブ化され、PIN を要求し、タッチを待ってから通常のパスワード プロンプトが表示されます。
しかし、tty からそのアカウントにログインしようとすると、パスワードの入力のみが求められ、U2F は完全に省略されます。それでも、Yubikey が切断されていても、以前にロックされていたホームは復号化されて開きます。
認証に U2F を使用するように強制するにはどうすればよいですか? については知っていますpam-u2f
が、ここで関連する場合、方法がわかりません。 を使用した「従来の」ユーザー ログインのセキュリティ保護に関するリソースをpam-u2f
このシナリオと一致させることはできません。 は常にキーの作成から始まりますが、この場合は によって管理されているようですsystemd-homed
(これに関する明確な情報は見つかりませんでした)。
答え1
私はそれを理解したので、誰かが同じ問題に遭遇した場合に備えて、私の発見を皆さんと共有したいと思います。
これはすべて PAM の構成に関係しています。Web 上のさまざまな情報から判断すると、これは使用する Linux ディストリビューションに大きく依存します。私の場合、Arch Linux では、system-auth
ユーザー認証を担当するデフォルトのファイルは次のようになります。
$ cat /etc/pam.d/system-auth
#%PAM-1.0
auth required pam_faillock.so preauth
auth [success=2 default=ignore] pam_unix.so try_first_pass nullok
-auth [success=1 default=ignore] pam_systemd_home.so
auth [default=die] pam_faillock.so authfail
auth optional pam_permit.so
auth required pam_env.so
auth required pam_faillock.so authsucc
# ...
これは、pam_unix.so
モジュール (パスワードによる認証を行う) が最初に実行され、成功した場合は次の 2 つのモジュールをスキップすることを意味します。したがって、パスワードが正しい場合はpam_systemd_home.so
実行されず、U2F を照会しません。アカウント パスワードは LUKS キーとして登録されているため、ホーム パーティション コンテナーのロックを解除するだけで十分です。
!!! 注意 !!!
PAM 構成をいじるときはいつもそうですが、変更が正常に確認されるまで、常にルート シェルを開いたままにしてください。そうしないと、PC からロックアウトされてしまう可能性があります。
FIDO2 デバイスのみで認証を実現したかったので、次のようにしました。
cat /etc/pam.d/system-auth
#%PAM-1.0
auth required pam_faillock.so preauth
-auth [success=2 default=ignore] pam_systemd_home.so
auth [success=1 default=ignore] pam_unix.so try_first_pass nullok
auth [default=die] pam_faillock.so authfail
auth optional pam_permit.so
auth required pam_env.so
auth required pam_faillock.so authsucc
最初pam_systemd_home.so
に実行され、成功するとデフォルトのパスワード プロンプトがスキップされます。LUKS の場合、FIDO2 デバイスがトークンとして登録されるため、これで十分です。
[success=2 default=ignore]
「本物の」2FA を導入したい場合は、と の[success=1...
設定を に変更するだけですrequired
。