!!! 주의 !!!

!!! 주의 !!!

나는 최근에 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...구성을 1단계로 변경하기만 하면 됩니다 required.

관련 정보