OS를 설치할 때 암호화가 없었습니다. 이제 포맷하지 않고 데이터 손실 없이 암호화할 수 있는 방법이 있습니까? 암호화 방법에 대한 일부 가이드를 읽었는데 모든 가이드에서 데이터가 손실될 수 있으므로 모든 데이터를 백업해야 한다고 말했습니다. 이제 데이터 손실 없이 모든 것을 암호화할 수 있는 방법이 있습니까?
답변1
예, 방법이 있습니다. LUKS cryptsetup
유틸리티에는 다음이 포함됩니다.재암호화 명령또한 이를 사용하여 기존 파일 시스템을 파괴하지 않고 기존의 암호화되지 않은 루트 파티션을 암호화할 수 있습니다.
즉, 그러한 변환을 수행하기 전에 데이터를 백업해야 합니다. 물론, 하드웨어 장애 등의 가능성이 있으므로 항상 정기적인 백업을 수행해야 합니다. 그러므로 이는 불필요한 조언이다.
기존 루트 파일 시스템을 암호화되지 않은 상태에서 암호화된 상태로 전환하려면 다음과 같은 여러 단계가 필요합니다.
- 지원
- cryptsetup 패키지가 설치되어 있는지 확인하십시오.
- 루트 파일 시스템에 여유 공간이 있는지 확인하세요(안전을 위해 최소 100MiB)
- 루트 파티션이 있는 파티션을 식별합니다. 예를 들어 를 사용하여
df /
파일 시스템의 UUID를 찾아blkid
어딘가에 저장합니다. - 루트 파일 시스템을 마운트 해제할 수 있는 복구 시스템으로 부팅합니다(예: 포함된 파일 시스템에서 -게미르)
- 루트 파티션 찾기(예:
blkid
UUID 사용 및 찾기) - ext4인 경우 파일 시스템 검사를 수행합니다.
e2fsck -f /dev/sdXY
- LUKS 헤더를 위한 공간을 확보하기 위해 파일 시스템을 축소합니다. 예를 들어 ext4 파일 시스템인 경우: (
resize2fs /dev/sdXY $smallersizeinGiB_G
적어도 32MiB만큼 축소해야 합니다) - 암호화하세요:
cryptsetup reencrypt --encrypt /dev/sdXY --reduce-device-size 32M
- 열어 봐:
cryptsetup open /dev/sdXY root
- 파일 시스템을 최대 크기로 확장합니다.
resize2fs /dev/mapper/root
- 다음 위치에 설치하세요.
/mnt/root
- 부팅 파일 시스템이 마운트되고
/mnt/root
의사 파일 시스템이 바인드 마운트됩니다./dev
/sys
/proc
/mnt/root
- 다음을 통해 시스템에 Chroot를 설치하세요.
chroot /mnt/root /bin/bash
/etc/default/grub
예를 들어 배포판에서 dracut을 사용하는 경우(아마도) 추가해야 하는 커널 매개변수 또는 이에 상응하는 매개변수를 업데이트합니다rd.luks.uuid=$UUID_OF_LUKS_DEVICE
( 참조 , 이 UUID는 루트 파일 시스템과 다름에 유의). selinux가 설치되어 있는 경우 추가 (그런 다음 삭제)blkid
해야 합니다.enforcing=0
그것) 모든 편집 때문에- 배포판에 selinux가 활성화되어 있는 경우 레이블 재지정을 구성합니다.
touch /mnt/root/.autorelabel
- 그럽 구성을 재생성합니다.
grub2-mkconfig -o /boot/.../grub...cfg
- initramfs를 다시 빌드합니다(cryptsetup 지원이 포함되었는지 확인하기 위해):
dracut -f /boot/initramfs....img kernelversion
- chroot 종료
- 모두 제거
cryptsetup close root
- 재시작
보시다시피, 이는 많은 단계입니다. 즉, 오류가 발생할 수 있습니다. 따라서 구성 파일 및 $HOME
.
그리고 2020년 현재 제 경험으로는 속도가 상대적으로 느리기 때문에 cryptsetup reencrypt
그냥 기기를 복원하고 백업을 복원하는 것이 더 빠를 수도 있습니다.cryptsetup luksFormat
XFS 파일 시스템이 있는 경우 2020년부터 XFS가 이 기능을 지원하지 않기 때문에 축소할 수 없습니다. 따라서 fstransform
축소하기 전에 축소해야 합니다 . 변환된 파일 시스템의 경우 다른 UUID를 처리해야 합니다. 이는 새 파일 시스템의 UUID를 이전 파일 시스템의 UUID로 변경하는 것을 의미합니다. 또는 업데이트되는 파일 시스템의 UUID입니다 /mnt/root/etc/fstab
.
dracut 기반 배포판의 경우 생성할 필요가 없으며 /etc/crypttab
다른 배포판에서는 이를 요구할 수 있습니다(initramfs 업데이트 전에 포함되어야 할 수도 있음).
답변2
LUKS FAQ에서https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#2-setup
2.5 LUKS를 사용하기 위해 비어 있지 않은 기존 파티션을 암호화할 수 있습니까?
변환기도 없고 실제로 필요하지도 않습니다. 이를 수행하는 방법
은 문제의 장치를 백업하고 장치를 안전하게 지우고(LUKS 장치 초기화는 이전 데이터를 지우지 않으므로)
luksFormat을 실행하고 선택적으로 암호화된 장치를 덮어쓰고
새 파일 시스템을 생성하고 암호화를 복원하는 것입니다. 이제 장치에 백업을 만드십시오.
"보안 측면" 및 "백업 및 데이터
복구" 섹션도 참조하세요.백업의 경우 일반 GNU tar가 훌륭하게 작동하며 파일 시스템에 있는 모든 것을 백업할 수 있습니다. *
하지만당신은 이것을 조사하고 싶을 수도 있습니다https://johndoe31415.github.io/luksipc/usage.html#plain-to-luks-conversion"Plain to LUKS Conversion"은 귀하의 요구 사항을 충족할 수 있습니다. 면책조항: 저는 이것을 시도해 본 적이 없고, 작동하는지 모르겠습니다. 그리고 프로젝트는 2015년 이후로 업데이트되지 않은 것 같습니다.