Linux LUKS 암호화 및 복제 시스템

Linux LUKS 암호화 및 복제 시스템

민트를 기반으로 프로토타입을 만들고 있어요. 민트 설치 + 설치 및 구성용 패키지. 프로토타입은 거친 느낌의 컴퓨터를 기반으로 제작되었습니다.

나는 다음을 계획하고 있다:

  1. 다른 여러 파일과 유사한 시스템에서 디스크를 복제합니다.

  2. 시스템과 파일을 숨기기 위해 디스크를 암호화(dm-crypt, LUKS)합니다.

설치된 시스템에서는 LUSK 암호화를 쉽게 수행할 수 없다는 것을 알았습니다. 이 프로세스를 "자동"으로 만드는 방법이 있습니까? 내 말은 동일한 실행에서 시스템을 암호화하고 복제하는 방법입니다.

답변1

내부 암호화를 수행하는 것이 가능하지만 다음을 강력히 권장합니다.백업하기첫 번째. 나는 썼다실험적인내가 부르는 도구지하실에서원시(암호화되지 않음), 일반(dm-crypt) 및 LUKS 형식 간에 변환할 수 있습니다.

암호화되지 않은 장치를 LUKS로 변환하려면 헤더를 설치할 수 있도록 처음에 약 2MiB의 공간을 허용하도록 장치의 기존 데이터를 이동해야 합니다. 또는 헤더를 분리하여 별도의 장치(예: USB 키)에 저장할 수 있습니다.

분리된 LUKS 헤더를 사용하거나 일반 모드 dm-crypt를 선택하면 데이터를 이동할 필요가 없으며 제자리에서 변환될 수 있습니다.

이론을 예시로 적어봤습니다여기오른쪽 시프트와 그 고유한 문제에 대해서도 읽을 수 있습니다.이 문제.

dd요약하자면, 기본 원시 장치에서 복사하는 dm-crypt 장치 매퍼를 사용하여 내부 암호화를 수행할 수 있습니다.

$ cryptsetup open "${raw_device}" crypt_device --type plain ${cryptsetup_args}
$ dd if="${raw_device}" conv=notrunc of=/dev/mapper/crypt_device
$ cryptsetup close crypt_device

(변수는 환경에 대한 관련 매개변수를 제공하기 위한 자리 표시자입니다. 이에 대한 자세한 내용은 위의 스크립트 및 링크된 페이지에 설명되어 있습니다.)

이것은 위험한 작업이다- 중간에 실패하면(정전, 뚱뚱한 손가락 또는 기타 이유로) 배부른 것입니다.먼저 백업을 하세요.

단어를 사용하였으니 참고해주세요지원,실험적인그리고이론.경고 사항,등!

답변2

아마도 가장 간단한 방법은 LUKS 암호화가 활성화된 마스터 이미지를 생성하고 구성하는 것입니다.

물론 이 마스터 디스크만 복제하면 모든 장치가 동일한 암호화 키를 공유하므로 이는 좋지 않습니다.

하지만 넌 할수있어다시 암호화암호화된 LUKS 파티션.

따라서 다음 워크플로를 스크립팅할 수 있습니다.

  1. dd마스터 이미지를 새 드라이브에 복사/dev/sdX
  2. 기존 장치의 UUID를 가져옵니다.cryptsetup luksUUID /dev/sdXY
  3. 재암호화:cryptsetup reencrypt /dev/sdXY
  4. UUID를 이전 UUID로 재설정합니다.cryptsetup luksUUID --uuid $olduuid /dev/sdXY

부팅 중에 잠금을 해제하기 위해 grub 구성 및/또는 initramfs(예: dracut을 통해)에 UUID가 내장되어 있으므로 UUID 재설정이 필요합니다.

또는 이러한 위치의 UUID를 업데이트해야 합니다.


마스터 이미지를 복제하려는 빈도에 따라 다른 프로세스를 사용하고 싶을 수도 있습니다. cryptsetup 재암호화 방법이 반드시 가장 빠른 방법은 아니기 때문입니다.

LUKS로 암호화된 마스터 이미지를 다시 완전히 구성하여 시작할 수 있습니다.

이 이미지에서 덤프 파티션 테이블을 사용할 수 있습니다 sfdisk -d. 그런 다음 암호화되지 않은 모든 이미지를 별도의 파일에 덤프합니다(일반적으로 이는 부팅 파티션입니다). 마지막으로 cryptsetup open마스터 이미지에서 시스템 파티션을 만들고(예: 장치 루프를 통해) 해당 콘텐츠를 다른 이미지 파일(예: root.img)에 덤프합니다.

이러한 부분이 제 위치에 있으면 복제 프로세스는 다음과 같습니다.

  1. 장치 파티션 나누기< part.dump sfdisk /dev/sX
  2. dd암호화되지 않은 파티션 - 예 -/dev/sX1
  3. 시스템 파티션을 포맷합니다.cryptsetup luksFormat --uuid $olduuid /dev/sXY
  4. 새로운 LUKS 장치 열기
  5. ddroot.img새로운 LUKS 장치 로

답변3

LVM이 아닌 경우 처음에 LUKS 헤더(2MiB)를 위한 공간을 확보하기 위해 모든 데이터를 이동해야 합니다. 따라서 이는 쉽고 위험이 없는 프로세스가 아닙니다.

관련 정보