부팅 파티션의 키 파일을 사용하여 LUKS로 암호화된 Debian 루트 디렉터리 잠금 해제

부팅 파티션의 키 파일을 사용하여 LUKS로 암호화된 Debian 루트 디렉터리 잠금 해제

나는 부팅 파티션(암호화 파티션)에 저장된 키 파일을 사용하여 데비안 루트 디렉터리의 암호를 해독하려고 합니다. 이로 인해 보안이 침해되지만 지금은 괜찮습니다. 나는 이 일을 성공적으로 해내지 못하면 죽어야 했습니다.

후크를 만들었고 initramfs키 파일은 파일 /boot내부의 디렉터리 에 있습니다 initrd.img-*. 키 파일의 경로( ) 는 이 파일 /boot/keyfile에 있습니다 ./etc/crypttab

업데이트했는데 다음 메시지가 나타납니다 initramfs.sudo update-initramfs -ucryptsetup: WARNING: target sdaX_crypt uses a key file, skipped.

이 메시지를 무시하고 재부팅하면 디스크를 부팅할 수 없게 됩니다. 이 메시지가 표시되어 쉘 Gave up waiting for root device.에 삭제됩니다 .initramfs

initramfs환경 에 존재하지 않습니다 cryptsetup.(존재해야 할까요?)

장치가 다른 방식으로 마운트되고 키 파일 암호 해독을 사용하도록 구성되지 않을 update-initramfs -u"생각"을 참조하십시오 .sdaX_crypt

어떻게 해야 하나요?

답변1

데비안의 cryptsetup 문서에 따르면, KEYFILE_PATTERN에 정의된 쉘 스타일(와일드카드) 패턴과 일치하는 키 파일은 /etc/cryptsetup-initramfs/conf-hookinitramfs에 포함되지만 다른 키 파일은 포함되지 않습니다:

  • 데비안 9의 경우:/usr/share/doc/cryptsetup/README.{initramfs,Debian}.gz
  • 데비안 10의 경우 /usr/share/doc/cryptsetup{-initramfs/README.initramfs,-run/README.Debian}.gz:.

이전 버전의 데비안에 대해서는 잘 모르겠습니다.

이러한 파일은 으로 읽을 수 있지만 zless filename.gz편의와 향후 참조를 위해 관련 부분은 다음과 같습니다.

12. initrd에 직접 키 파일을 저장합니다.

일반적으로 키 파일을 사용하는 장치는 무시되고(큰 경고음과 함께) initramfs 이미지는 일반적으로 암호화되지 않은 /boot 파티션에 있기 때문에 키 파일 자체는 initrd에 포함되지 않습니다. 그러나 어떤 경우에는 initrd에 키 파일을 포함해야 합니다. 예를 들어 최신 버전의 GRUB는 암호화된 블록 장치에서 부팅을 지원하여 암호화된 /boot 파티션을 허용합니다.

crypttab(5)에 의해 나열된 키 파일 중에서 환경 변수 KEYFILE_PATTERN(셸 모드로 해석됨)의 값과 일치하는 파일은 initramfs 이미지에 포함됩니다. 예를 들어 /etc/crypttab에 두 개의 키 파일 /etc/keys/{root,swap}.key가 나열되어 있는 경우 /etc/cryptsetup-initramfs/conf-hook에 다음을 추가하여 initrd에 추가할 수 있습니다.

KEYFILE_PATTERN="/etc/keys/*.key"

또한 initramfs 이미지에 개인 키 자료가 포함되어야 하는 경우 권한이 없는 사용자를 차단하려면 제한적인 umask를 사용하여 이미지를 생성해야 합니다. 이는 /etc/initramfs-tools/initramfs.conf에 다음을 추가하여 수행할 수 있습니다.

우마스크=0077

답변2

keyscript대신 crypttab의 옵션을 사용할 수 있습니다 (man crypttab). 키스크립트를 반영하는 스크립트를 생성하고 이를 키스크립트 매개변수로 설정한 다음 ramfs를 재생성하세요. 후크가 필요하지 않으며 /boot/에 스크립트를 넣을 필요도 없습니다.

vg1-root_crypt UUID=94a3b301-123-12-a3-ea0403 none luks,keyscript=/etc/echo-root-luks-pass

cryptsetup의 initramfs 후크가 왜 crypttab에 키 파일을 나열하지 못하게 하는지 모르겠습니다. 그러한 행동을 용납하고 싶지 않을 수도 있습니다.

PS 나는 그것이 보안을 깨뜨린다고 생각하지 않습니다. 단지 /boot 파티션이 얼마나 안전한지에 따라 보안이 다소 약화될 뿐입니다. 예를 들어 USB 드라이브를 끄고 USB를 양말 등에 넣을 수 있습니다.

답변3

실제로 메시지를 무시하고 파티션을 건너뛰지 않으려면 오류 메시지가 기록된 줄 (약 274번 줄 - 사용된 cryptsetup 버전에 따라 다름) 뒤에 return 1오는 내용을 주석 처리/제거해야 합니다(적어도). /usr/share/initramfs-tools/hooks/cryptroot이 파일은 기본적으로 패키지 관리자에 의해 관리되므로 cryptsetup 패키지 업데이트 시 덮어쓰여집니다.

또한 읽어보세요https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776409 이 문제에 대한 추가 정보.

나는 이것을 아직 테스트하지 않았으며 언급된 키 파일의 경우를 고려하지 않은 것 외에 다른 이유가 있을 수 있습니다.

답변4

initramfs@ignis의 답변에 동의하지만 작동하려면 파일 에 다음과 같은 옵션이 필요하다는 점을 추가하고 싶습니다 /etc/crypttab.

# <target name> <source device>             <key file>          <options>
mapper-name     /etc/disk/by-id/scsi_xxxxx  /etc/keys/luks.key  luks,initramfs

Obs: 답변에 대해 언급을 했을 텐데, 아직 평판이 부족해요.

관련 정보