! ! ! 알아채다!

! ! ! 알아채다!

최근에 systemd-homed를 시도하고 Yubikey를 FIDO2 장치로 등록했습니다. 내가 만든 집으로 인증을 시도하면 homectl authenticate <user>Yubikey가 올바르게 활성화되고 PIN을 요청하고 터치를 기다린 다음 일반적인 비밀번호 프롬프트가 나타납니다.

하지만 tty에서 계정에 계속 로그인하면 비밀번호를 묻는 메시지만 표시되고 U2F는 완전히 생략됩니다. 그래도 Yubikey의 연결이 끊어지더라도 이전에 잠긴 집의 암호가 해독되어 열립니다.

인증에 U2F를 강제로 사용하려면 어떻게 해야 하나요? 알아요 pam-u2f. 하지만 여기서 관련이 있다면 어떻게 해야 할지 모르겠습니다. "전통적인" 사용자 로그인을 보호하는 리소스를 이 상황에 pam-u2f일치시킬 수 없습니다. 그들은 항상 키 생성으로 시작하지만 systemd-homed이 경우에는 키를 관리하는 것으로 보입니다(이에 대한 명확한 정보를 찾을 수 없습니다).

답변1

나는 그것을 알아냈고 누군가가 같은 문제를 우연히 발견할 경우를 대비해 내 결과를 여러분과 공유하고 싶었습니다.

PAM 구성에 관한 것입니다. 웹에서 찾은 다양한 결과를 통해 알 수 있듯이 사용된 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모듈(비밀번호를 통한 인증)이 먼저 실행되고 성공 시 다음 두 모듈을 건너뛰는 것을 의미합니다. 따라서 비밀번호가 맞으면 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.

관련 정보