루트 파티션을 dm-crypt 암호화 파티션에 복제합니다.

루트 파티션을 dm-crypt 암호화 파티션에 복제합니다.

25.93GB/62.43GB 파티션에 Gentoo Linux를 설치했습니다 /dev/sda4. 디스크의 다른 파티션에는 150MB /boot/dev/sda1사용되지 않은 공간이 있고 다른 두 파티션에는 56,66GB의 사용되지 않은 공간이 있습니다.

dm-crypt사용하지 않는 공간을 암호화하고 ext4로 포맷한 다음 설치를 해당 공간으로 마이그레이션하여 이전 파티션을 제거할 계획 입니다. 내 질문은 다음과 같습니다

  • 이것이 가능한가? 아니면 암호화된 볼륨에서 설치를 실행하려면 많은 조정이 필요합니까 /dev/sda2?

  • 이것이 효율적인 접근 방식입니까? 내가 25.9GB Gentoo를 가지고 있다는 점을 고려하면, 전체 디스크를 암호화하고 Gentoo(및 모든 패키지)를 다시 설치하면 번거로움이 덜할까요?

  • 여기를 사용해야 할까요 encfs, 아니면 ecryptfs교체 해야 할까요 dm-crypt? 동등한 보안을 제공합니까?

  • 파티션을 암호화하려면 어떤 알고리즘을 사용해야 합니까? 내 프로세서에는 AES-NI가 없습니다.

  • 암호화된 파티션을 다른 파티션과 동기화하려면 무엇을 사용해야 합니까? 비슷한 것이 있나요 dcfldd?


마이그레이션된 파티션에서 편집 내용 쓰기:

  • 사용하지 않는 파티션을 삭제하고 포맷되지 않은 새 파티션을 만든 후 다음을 /dev/sda2실행합니다.

    cryptsetup luksFormat /dev/sda2
    cryptsetup luksOpen /dev/sda2 encrypt
    pv /dev/zero > /dev/mapper/encrypt
    

    pv이는 0 쓰기 진행 상황을 모니터링하는 데 사용되며 그 후 암호화된 파티션을 ext4로 포맷합니다 mkfs.ext4 /dev/mapper/encrypt.

  • 파티션을 동기화하기 위해 rsync라이브 USB에서 PC를 부팅한 후 YoMismo의 제안을 사용했습니다. 하지만 들어갈 수는 없습니다 chroot. 이전 파티션을 재부팅하고 chroot거기서부터 시작해야 합니다. 이 프로세스에서는 다음을 실행합니다.

    mkdir /tmp/old_partition /tmp/new_encrypt
    mount /dev/sda4 /tmp/old_partition
    mount /dev/mapper/encrypt /tmp/new_encrypt
    cd /tmp/new_encrypt
    rsync -av /tmp/old_partition/* .
    

    이전 파티션을 재부팅한 후 가상 커널 파일 시스템을 /dev/sda4열고 마운트합니다./dev/sda2

  • 나는 하나를 만들었 /etc/crypttab습니다root UUID=<uuid of /dev/sda2> none luks

  • /etc/fstab내 루트 파티션 UUID=<uuid of mapper>이 .
  • 변경한 사항 /boot/grub/grub.conf: root=<root>줄 끝 부분을 제거 kernel하고 암호화된 장치를 설정했습니다 crypt_root=UUID=<uuid> root=/dev/mapper/root.
  • 나는 genkernel --install --luks initramfsluks의 지원을 받아 새로운 initramfs를 만들기 위해 달려갔습니다.

이제 그것을 시작하고 실행할 수 있습니다. 남은 유일한 일은 이전 파티션에 불을 붙이는 것입니다.

답변1

1.- 네, 가능합니다. 하지만 약간의 조정이 필요합니다.

2.- 전체 디스크를 암호화할 수 없습니다. 시스템을 부팅하려면 최소한 부팅 파티션을 암호화 해제해야 합니다(누군가가 암호 해독 암호 -initrd-를 요청해야 하며 이를 암호화 해제해야 합니다).

3.- encfs몇 가지 결함이 있습니다. 읽을 수 있습니다.여기. 나는 작업을 수행하기 위해 dm-crypt를 사용할 것입니다.

4.- 설마, 어쩌면 물고기 자리일까요?

5.- 이 작업을 수행하려면 Live CD/USB를 사용하겠습니다. 남겨둔 공간이 다른 파티션의 데이터를 수용하기에 충분한지 모르겠습니다. 그렇다면(파티션이 가득 차지 않은 경우) 다음을 수행합니다.

  • 먼저 원하는 파티션 구성표의 종류를 결정해야 합니다. /, /boot 및 스왑만 필요하다고 가정합니다. 따라서 /boot를 망칠 필요가 없으며, 사용되지 않은 파티션에 남아 있는 공간이 암호화된 파티션(이 경우 /)에 넣으려는 데이터를 보관하기에 충분하다고 가정하겠습니다.
  • life CD를 사용하여 시스템을 부팅합니다.
  • 대상 파티션이 /dev/sdc1이라고 가정하면 cryptsetup luksFormat /dev/sdc1암호화 비밀번호를 입력하라는 메시지가 표시됩니다. 그런 다음 암호화된 파티션을 연 후 cryptsetup luksOpen /dev/sdc1 Enc여기에 0을 모두 쓰고 dd if=/dev/zero of=/dev/mapper/Enc파일 시스템을 만듭니다.mkfs.ext4 /dev/mapper/Enc
  • 이제 파티션을 마운트하고, 파일을 복사하고, 루트 디렉터리를 새 파티션으로 변경하세요.

mkdir /tmp/O /tmp/D

mount /dev/sda4 /tmp/O

mount /dev/mapper/Enc /tmp/D

cd /tmp/D;rsync -av /tmp/O/* .

mount --bind /dev dev

mount --bind /proc proc

mount --bind /proc/sys sys

mount --bind /sys sys

chroot /tmp/D

mount /dev/sda1 /boot

- blkid파티션 UUID를 식별하고 이 정보를 사용하여 grub 구성 파일 및 fstab을 수정하는 데 사용됩니다(루트 파티션 장치는 /dev/mapper/root_crypt여야 함). 새 암호화된 파티션이 참조되도록 /etc/crypttab을 수정합니다. initrd에서 새로운 변경 사항을 업데이트하려면 grub이 있어야 하는 위치 에 root_crypt UUID=your/encrypted/dev/uuid none luks.grub-update grub-installupdate-initramfs

제가 아무것도 놓치지 않았다면 지금 준비가 되어 있어야 합니다. 스왑 파티션이 걱정되지 않는 한, 걱정되고 최대 절전 모드에서 다시 시작하고 싶다면 이전 단계에 따라 스왑 파티션을 암호화해야 합니다. mkswap대신에 mkfs.ext4. 또한 /etc/crypttab에 스왑 파티션을 추가해야 합니다. /dev/mapper/name_swap_you_created_in_etc_crypttab이 스왑 파티션용 장치가 되도록 fstab을 수정하고 update-initramfs.

관련 정보