이미 USB 스틱에 파티션이 있고 컴퓨터에 LUKS 파티션이 있습니다. 이는 Ubuntu 21의 전체 디스크 암호화 체계에 해당합니다. LUKS 파티션의 헤더를 USB(해당 파티션이나 다른 파티션) /boot
에 넣고 싶습니다. /boot
새 파티션에) 내 USB에)
부팅 파티션(장치에 있다고 가정) cryptsetup luksHeaderBackup
에 헤더( 포함)를 배치한 다음 파일을 사용하여 다음 옵션을 시도했습니다 .boot_header.luks
/dev/sda3
crypttab
header=
/boot/boot_header.luks
/dev/sda3/boot_header.luks
/dev/sda3:/boot_header.luks
그리고/boot_header.luks:/dev/sda3
(물론)
uuid와 동일 /dev/sda3
하고 또한 동일합니다./dev/disk/by-uuid/[uuid]
sda3
그래서 문서에 따라 장치가 설치되지 않은 것 같습니다.비밀번호 테이블(제 이해가 맞다면)
선택적으로 [헤더가 포함된 파일] 경로 뒤에 ":" 및 /etc/fstab 장치 사양이 올 수 있습니다(예: "UUID=" 또는 이와 유사한 것으로 시작). 이 경우 경로는 장치 파일에 상대적입니다. 시스템은 루트입니다. 장치는 LUKS 장치 활성화 중에만 자동으로 설치됩니다.
그래서 실행하기 전에 설치 부팅 파티션을 찾아봤습니다.숨겨진 루트local-bottom
그리고 사용자 정의 스크립트가 포함된 스크립트 init-bottom
. 또한 추천대로여기헤더를 initramfs에 병합해 보았습니다.답변
그러나 시작 시 결과는 항상 동일합니다.
"제목" 옵션의 값이 잘못되었습니다.
나는 이것이 꽤 가능하다고 생각했다아치하지만 Ubuntu에서 (cryptroot와 같은 기존 스크립트를 수정하지 않고) 동일한 작업을 수행할 수 있는 방법이 있습니까?
답변1
댓글에서 지적했듯이@AB해결책은 파티션 내의 헤더 파일 대신 헤더가 있는 원시 파티션입니다(파일 시스템을 먼저 마운트해야 하기 때문에 번거롭습니다).
헤더(LUKS2는 ~16MB)를 파티션( /dev/sdb
헤더 크기보다 큼)에 복사하는 데는 두 가지 옵션이 있습니다.
- 첫 번째는 원본 헤더를 복사하는 것입니다
dd
.
먼저 데이터의 오프셋을 찾아야 합니다(왜냐하면헤더는 항상 0에서 시작합니다.). LUKS 장치의 경우 ligne를 /dev/sda4
사용 cryptsetup luksDump /dev/sda4
하고 찾으십시오.오프셋이 섹션의데이터 세그먼트. 그런 다음 파일 시스템 블록 크기 찾기를 사용하십시오 stat -fc %s /dev/sda4
. 마침내,dd if=/dev/sda4 of=/dev/sdb bs=<fs_block_size> count=<data_offset>
- 두 번째는 모든 헤더 데이터를 파티션에 복사할 백업 파일로 압축하는 것입니다
/dev/sdb
.
파일을 백업하면 일부 문제가 발생할 수 있으므로보안 질문암호화된 디스크에 저장되더라도 해당 파일에 대한 가상 디스크를 생성하는 것이 가장 좋습니다.
mkdir /tmp/header_backup
mount -t tmpfs -o size=512m tmpfs /tmp/header_backup
cryptsetup luksHeaderBackup /dev/sda4 --header-backup-file /tmp/header_backup/header.luks
dd if=/tmp/header_backup/header.luks of=/dev/sdb
umount /tmp/header_backup
그런 다음 해당 줄에 /etc/crypttab
옵션을 추가합니다 header=/dev/sdb
(예 sda4_crypt [UUID] none luks,discard,header=/dev/sdb
: ).
이전 LUKS 헤더를 지우려면: cryptsetup luksErase /dev/sda4
. 이렇게 하면 키홈만 지워지고 모든 메타데이터는 유지됩니다. 헤더를 완전히 지우려면(필수는 아님) 파티션에 UUID를 유지하기 위해 그 위에 다른 파일 시스템 헤더가 있어야 합니다. 하지만 저장 장치(SSD 또는 HDD)에 따라 LUKS 헤더를 완전히 삭제해도 보안 삭제가 이루어지지 않을 수 있습니다.SSD의 경우삭제된 블록은 장치가 더 많은 공간을 할당해야 할 때까지 대기열에 남아 있을 수 있습니다.
그렇지 않은 경우 헤더를 지우려면: 파일 시스템 블록 크기( <fs_block_size>
) stat -fc %s /dev/sda4
, LUKS 데이터 오프셋( <luks_data_offset>
) cryptsetup luksDump /dev/sdb
, 파티션의 UUID /dev/sda4
( <uuid_sda4>
)를 가져온 다음:
dd if=/dev/urandom of=/dev/sda4 bs=<fs_block_size> count=<luks_data_offset>
mkfs.ext4 fs.img
tune2fs -U <uuid_sda4> fs.img
dd if=fs.img of=/dev/sda4
파티션은 /dev/sdb
LUKS와 동일한 UUID를 가지게 되는데, 이는 문제가 될 수 있습니다. LUKS 프로세스를 중단하지 않고 변경할 수 있습니다.cryptsetup luksUUID /dev/sdb --uuid $(uuidgen)
마지막으로 업데이트된 initramfsupdate-initramfs -u -k all