FIDO2(YubiKey) Fedora 36 시작 시 LUKS 잠금 해제가 작동하지 않음

FIDO2(YubiKey) Fedora 36 시작 시 LUKS 잠금 해제가 작동하지 않음

시스템 부팅 시 LUKS 볼륨 잠금을 해제하기 위해 Fedora 36에서 FIDO2(YubiKey 5)를 사용하려고 시도했지만 LUKS 볼륨 잠금을 해제하기 위해 토큰을 사용하지 않고 일반 LUKS 비밀번호를 계속 요청했기 때문에 실패했습니다.

나는 팔로우한다레나르트 페틀링(Lennart Petling)의 예systemd-cryptenrollYubiKey를 등록한 다음 /etc/crypttab적절한 구성으로 파일을 수정하는 방법은 그의 블로그에서 확인하세요 . cryptsetup luksDump디스플레이 토큰이 LUKS 헤더에 추가됩니다. 그러나 시스템 시작 시 Plymouth 시작 화면이 표시되어 볼륨 잠금을 해제하기 위해 일반 LUKS 비밀번호를 묻는 메시지가 표시됩니다.

Plymouth가 FIDO2 PIN을 입력하라는 메시지를 표시하지 않을 수도 있다고 생각하여 사용자 존재나 PIN이 필요하지 않도록 추가 매개변수를 사용하여 LUKS 키웨이와 토큰을 제거하고 다시 추가했습니다.

systemd-cryptenroll --fido2-device=auto --fido2-with-user-verification=false --fido2-with-client-pin=false /dev/sda3

그래도 작동하지 않고 LUKS 비밀번호를 묻는 메시지가 계속 표시됩니다.

Fedora 36은 systemd 버전 250을 실행하고 있습니다.

FIDO2가 LUKS 볼륨을 잠금 해제할 수 없는 이유를 아시나요?

답변1

TL,DR 실행dracut --regenerate-all --force

dracut --regenerate-all --force그래서 문제를 발견했습니다. 다시 시작하기 전에 수정한 내용이 실행되지 않았습니다 /etc/crypttab. 나는 데비안 기반 배포판을 실행해야 한다고 믿습니다 update-initramfs -u. FIDO2 PIN이 필요한 경우 Plymouth 인터페이스에 입력하세요. LUKS 암호를 입력하는 것과 동일하게 보이지만 Esc 키를 누르면 FIDO2 토큰 PIN을 묻는 메시지가 표시됩니다.

RH/Fedora 배포판에서 LUKS 볼륨을 잠금 해제하기 위해 FIDO2 토큰(예: YubiKey)을 구성하는 전체 절차는 여기에 제공됩니다. (참고: 이 기능은 systemd 버전 248에서만 지원됩니다. systemctl --version확인하십시오.)

  1. 기존 LUKS 키홈 정보를 봅니다. 처음에 암호 문구만 사용하도록 구성된 경우 하나의 키 슬롯(슬롯 0)과 0개의 토큰만 표시됩니다.

cryptsetup luksDump /dev/sda3(sda3를 블록 장치로 교체)

  1. 등록 토큰. 이 예에서는 FIDO2 PIN 및 사용자 존재 요구 사항(예: "터치")을 지정합니다.

systemd-cryptenroll --fido2-device=auto --fido2-with-client-pin=true --fido2-with-user-presence=true /dev/sda3

  1. LUKS 토큰과 키웨이를 다시 확인해보세요. 이번에는 추가 키 슬롯(슬롯 1)과 새 토큰(토큰 0)이 표시되어야 하며, 등록 중에 지정된 경우 위의 매개변수도 나열됩니다.

cryptsetup luksDump /dev/sda3

  1. /etc/crypttab을 수정하십시오. 기본적으로 Fedora 36은 UUID를 사용합니다.

vim /etc/crypttab

수정해서 이런 모양이 되도록 하세요.

luks-a6c32afd-3c35-4628-8653-5be499eaf0ce UUID=a6c32afd-3c35-4628-8653-5be499eaf0ce - fido2-device=auto

  1. 새로운 initramfs 이미지 생성

dracut --regenerate-all --force

  1. 재부팅하고 테스트하십시오. 앞서 언급했듯이 Plymouth 시작 화면은 동일하게 보이지만 LUKS 비밀번호를 입력하는 대신 FIDO2 PIN을 입력합니다. 또는 "Esc"를 눌러 실제로 FIDO2 PIN을 입력하라는 메시지가 표시되는지 확인하세요(필요한 경우). 현재 상태 요구 사항이 지정된 경우 터치 토큰이 필요합니다. 시스템이 부팅되어야 합니다.

추가 기능:

LUKS 볼륨에서 토큰을 제거합니다.

cryptsetup token remove --token-id 0 /dev/sda3

그리고 해당 키홈을 제거하십시오.

systemd-cryptenroll --wipe-slot=1 /dev/sda3

여러 개의 FIDO2 토큰을 등록하고 PIN 및 현재 상태 요구 사항을 지정하는 경우 토큰을 X번 터치해야 한다는 것을 알았습니다. 여기서 X는 등록된 n번째 토큰입니다. 예를 들어 4개의 토큰을 등록한 경우 네 번째 등록 토큰을 사용하면 시스템이 시작되기 전에 4번 터치해야 합니다. 내 생각엔 이것이랑 관련이 있는 것 같아이는 SYSTEMD-CRYPTENROLL(1)에 언급되어 있습니다.

또한 systemd-cryptsetup이 현재 삽입된 토큰을 인식하지 못하여 장치에 어떤 인증 요청을 보낼지 알 수 없기 때문에 여러 FIDO2 토큰 등록에 대한 지원은 현재 덜 유용합니다.

답변2

Fedora F38 Silverblue(systemd v253 포함)에도 비슷한 문제가 있습니다. FIDO2 보안 토큰이 부팅 시 LUKS2를 잠금 해제하지 못합니다. 비밀번호 입력만 유효합니다.

문제는 libfido2.so변경할 수 없는 F38 Silverblue / initrd에 필수 파일(등)이 누락되어 있다는 것 입니다 initramfs. 현재 lsinitrd검증에 사용할 수 있는 파일을 나열합니다.

Silverblue를 로컬 생성으로 전환 initramfs하고 dracut모듈을 추가할 수 있습니다 /usr/lib/dracut/modules.d.

sudo rpm-ostree initramfs --enable --arg='--add' --arg='fido2'

시작 시 Plymouth(그래픽) LUKS2 암호 프롬프트가 평소와 같이 나타납니다. PIN 입력이 활성화되었는지 확인하려면 EscView Terminal Prompts(터미널 프롬프트 보기)를 누르세요 Please enter LUKS2 token PIN::. 이제 두 프롬프트 중 하나에 비밀번호나 PIN을 입력할 수 있는 옵션이 있습니다.

관련 정보