! ! !気づく!

! ! !気づく!

最近、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

Nowがpam_systemd_home.so最初に実行され、成功するとデフォルトのパスワードプロンプトがスキップされます。 LUKSの場合、FIDO2デバイスはトークンとして登録されているので、これで十分です。

"実際" 2FAが必要な場合[success=2 default=ignore][success=1...構成をrequired

関連情報