웹사이트 검색

Ubuntu 22.04를 설치하는 동안 전체 디스크를 암호화하는 방법


Linux 배포판은 전체 디스크 암호화를 제공하고 시장 선두주자가 되어 추가 보호를 얻는 데 큰 역할을 했습니다.

Ubuntu에는 다양한 기능이 번들로 포함되어 있으며 디스크 암호화도 그 중 하나입니다. 장치를 도난당한 경우에도 부팅할 때마다 암호를 입력해야 하므로 어떤 비용을 치르더라도 개인 데이터를 보호하려는 사람들에게는 전체 디스크 암호화를 활성화하는 것이 중요합니다.

전체 디스크 암호화는 운영 체제를 설치하는 동안에만 활성화할 수 있습니다. 전체 디스크 암호화는 부팅 및 스왑 파티션도 포함하는 드라이브의 각 파티션에 적용되기 때문입니다. 이것이 바로 설치 시작부터 이를 활성화해야 하는 이유입니다.

이 단계별 튜토리얼은 Ubuntu 22.04에서 전체 디스크 암호화를 활성화하는 방법을 안내하며, 이를 위해 LVM(LVM을 활용할 것입니다. >논리 볼륨 관리) 및 LUKS(암호화 목적).

전제 조건:

  • 부팅 가능한 USB 드라이브.
  • 대용량 파일을 다운로드하기에 충분한 대역폭을 갖춘 인터넷 연결.
  • UEFI 지원 마더보드.

하지만 프로세스를 시작하기 전에 디스크 암호화의 장단점에 대해 간략하게 살펴보겠습니다.

디스크 암호화의 장점과 단점

각 기능은 장단점과 함께 번들로 제공되며 이는 디스크 암호화의 경우에도 적용 가능합니다. 따라서 앞으로 진행될 단계에서 무엇을 기대하고 무엇을 기대하지 않는지 아는 것은 항상 좋은 생각입니다.

장점:
  • 민감한 데이터를 도난으로부터 보호합니다 – 그렇습니다. 시스템이 도난당하더라도 개인 데이터는 항상 보호되므로 이는 디스크 암호화의 가장 흥미로운 기능입니다. 이 점은 노트북 등 도난 위험이 높은 모바일 기기의 경우 더욱 적절합니다.
  • 감시로부터 데이터를 저장합니다 – Linux에서는 시스템이 해킹당할 가능성이 매우 낮지만 사용자가 수상한 사기로부터 자신을 보호할 만큼 똑똑하지 않은 경우에는 해킹이 가능합니다. 컴퓨터가 공격을 받더라도 해커는 데이터에 액세스할 수 없으며 이는 이를 가능하게 하는 또 다른 증거입니다.
단점:
  • 성능에 미치는 영향 – 최신 컴퓨터는 문제 없이 암호화를 처리할 수 있지만 사용하는 동안 읽기 및 쓰기 속도가 약간 느려지므로 리소스가 거의 없는 시스템에만 적용할 수 있습니다.

우리에 따르면, 전체 디스크 암호화는 많은 장점을 제공하는 동시에 몇 가지 추가 리소스로 단점을 쉽게 극복할 수 있으므로 항상 현명한 선택입니다. 따라서 더 나은 보안을 위해 약간의 성능 저하가 있어도 괜찮다면 암호화 프로세스를 시작하겠습니다.

Ubuntu 22.04에서 전체 디스크 암호화

이 가이드는 초보자에게 친숙한 가이드이며 각 단계를 안내하는 동시에 고급 사용자도 이 가이드의 혜택을 누릴 수 있습니다.

1단계: Ubuntu 22.04 ISO 다운로드

공식 Ubuntu 다운로드 페이지를 방문하여 Ubuntu 22.04 LTS 버전을 선택하면 자동으로 다운로드가 시작됩니다.

2단계: 부팅 가능한 Ubuntu USB 드라이브 만들기

Ubuntu ISO 이미지를 USB 드라이브에 플래시하기 위해 현재 사용 중인 OS를 자동으로 감지하는 Balena Etcher를 사용할 예정입니다. Balena Etcher 설치가 완료되면 시스템에 설치하십시오.

ISO 파일을 구우려면 balenaEtcher를 열고 '파일에서 플래시' 옵션을 선택한 다음 최근에 다운로드한 Ubuntu 22.04 ISO 파일을 선택합니다.

다음으로 ISO 파일을 플래시하려는 드라이브를 선택합니다. "대상 선택" 옵션을 선택하면 시스템에 마운트된 모든 드라이브가 나열됩니다. 사용 가능한 옵션에서 USB 또는 DVD 드라이브를 선택합니다.

USB 드라이브를 성공적으로 플래시했으면 이제 USB 드라이브에서 부팅할 차례입니다. USB로 부팅하려면 시스템을 재부팅하고 F10, F2, F12, F1 또는 을 사용하세요. DEL 시스템이 부팅되는 동안. 여기에서 USB를 부팅 드라이브로 선택해야 합니다.

3단계: USB 드라이브를 사용하여 Ubuntu 설치 시작

USB를 통해 부팅되면 파티셔닝 및 암호화 부분을 진행할 수 있습니다. 이는 복잡해 보일 수 있으므로 일부 신규 사용자에게는 부담스러울 수 있지만 각 단계를 따르기만 하면 시스템이 즉시 암호화됩니다.

참고: Nvme SSD 사용자에게는 일부 명령이 다르므로 필요할 경우 명령을 구분해 두었으므로 명령을 적용하기 전에 지침을 읽어보시기 바랍니다.

Ubuntu로 부팅하면 Ubuntu 사용해 보기Ubuntu 설치라는 두 가지 옵션이 표시됩니다. 파티션을 암호화하려면 라이브 환경을 사용해야 합니다. 따라서 “Try Ubuntu”라고 표시된 첫 번째 옵션을 선택하세요.

왼쪽 상단에 있는 활동을 클릭하고 터미널을 검색하세요. 첫 번째 결과에서 Enter를 누르면 터미널이 열립니다. 다음으로, 우리가 사용할 모든 명령에는 관리 권한이 필요하므로 루트 사용자로 전환하십시오.

sudo -i

앞으로 나올 명령은 BASH에 크게 의존하므로 다음 명령을 사용하여 기본 셸에서 BASH로 전환해 보겠습니다.

bash

다음으로 설치 대상을 식별하고 다음 명령을 사용하여 마운트된 모든 저장 장치를 나열해야 합니다.

lsblk

대상 파티션은 크기별로 쉽게 식별할 수 있으며 대부분의 경우 이름은 sdavda로 지정됩니다. 제 경우에는 20GB 크기의 sda입니다.

대상 장치에 변수 이름 할당(HDD 및 SATA SSD의 경우)

이 섹션은 SATA SSD에 HDD를 사용하는 경우에만 적용됩니다. 따라서 Nvme SSD를 장착하신 분이라면 아래 단계에서 변수명 할당에 대해 설명드리겠습니다.

내 대상 장치 이름이 sda이므로 다음 명령을 사용해야 합니다.

export DEV="/dev/sda"
대상 장치에 변수 이름 할당(Nvme SSD에만 해당)

Nvme를 사용하는 사람인 경우 대상 장치의 이름 지정 구성표는 /dev/nvme$ {ControlLER}n$ {NAMESPACE}p$ {PARTITION}입니다. 따라서 파티션이 하나만 있는 경우 해당 명령과 이름이 비슷할 수 있습니다.

export DEV="/dev/nvme0n1"

이제 다음 명령을 사용하여 암호화된 장치 매퍼에 대한 변수를 구성해 보겠습니다.

export DM="${DEV##*/}"

각 Nvme 장치에는 접미사에 'p'가 필요하므로 주어진 명령을 사용하여 접미사를 추가하세요.

export DEVP="${DEV}$( if [[ "$DEV" =~ "nvme" ]]; then echo "p"; fi )"
export DM="${DM}$( if [[ "$DM" =~ "nvme" ]]; then echo "p"; fi )"

4단계: 새 GPT 파티션 생성

새로운 GPT 파티션 테이블을 생성하기 위해 다음 명령과 함께 sgdidk 유틸리티를 활용하겠습니다.

sgdisk --print $DEV

이제 사용 가능한 모든 데이터를 안전하게 제거할 수 있지만 기존 파티션과 함께 이 시스템을 설치하는 경우 이 단계를 피하십시오.

데이터 형식을 지정하려면 다음 명령을 사용하십시오.

sgdisk --zap-all $DEV

5단계: 설치를 위한 새 파티션 생성

BIOS 모드 GRUB의 코어 이미지에 2MB 파티션, 768MB 부팅 파티션, EFI 파일 시스템에 128MB를 할당하고 나머지 공간은 다음에 할당됩니다. 원하는 데이터를 저장할 수 있는 사용자입니다.

주어진 명령을 하나씩 사용하여 드라이브를 분할하십시오.

sgdisk --new=1:0:+768M $DEV
sgdisk --new=2:0:+2M $DEV
sgdisk --new=3:0:+128M $DEV
sgdisk --new=5:0:0 $DEV
sgdisk --typecode=1:8301 --typecode=2:ef02 --typecode=3:ef00 --typecode=5:8301 $DEV

파티션 이름을 변경하려면 다음 명령을 사용하십시오.

sgdisk --change-name=1:/boot --change-name=2:GRUB --change-name=3:EFI-SP --change-name=5:rootfs $DEV
sgdisk --hybrid 1:2:3 $DEV

최근에 생성된 파티션을 나열하려면 다음 명령을 사용하십시오.

sgdisk --print $DEV

6단계: 부팅 및 OS 파티션 암호화

HDD 및 SATA SSD에만 해당

부팅 파티션을 암호화하여 암호화 프로세스를 시작하겠습니다. 허가를 요청할 때 모두 대문자로 YES를 입력해야 합니다.

cryptsetup luksFormat --type=luks1 ${DEV}1

이제 다음 명령을 사용하여 OS 파티션을 암호화해 보겠습니다.

cryptsetup luksFormat --type=luks1 ${DEV}5

추가 설치를 위해서는 다음 명령을 사용하여 부팅 및 OS 파티션을 잠금 해제하여 암호화된 파티션을 잠금 해제해야 합니다.

cryptsetup open ${DEV}1 LUKS_BOOT
cryptsetup open ${DEV}5 ${DM}5_crypt
Nvme SSD에만 해당

이 단계는 시스템에 Nvme SSD가 장착된 경우에만 적용됩니다. 부팅 및 OS 파티션을 암호화하려면 다음 명령을 사용하십시오.

cryptsetup luksFormat --type=luks1 ${DEVP}1
cryptsetup luksFormat --type=luks1 ${DEVP}5

이제 설치 시 추가 처리가 필요하므로 암호화된 파티션의 잠금을 해제해 보겠습니다.

cryptsetup open ${DEVP}1 LUKS_BOOT
cryptsetup open ${DEVP}5 ${DM}5_crypt

7단계: 파티션 포맷

이는 가장 중요한 단계 중 하나입니다. 완료하지 않으면 설치 프로그램이 파일 시스템 쓰기 기능을 비활성화합니다. 포맷을 시작하려면 다음 명령을 사용하십시오.

mkfs.ext4 -L boot /dev/mapper/LUKS_BOOT

EFI-SP 파티션 포맷(HDD 및 SATA SSD에만 해당)

시스템에 HDD 및 SATA SSD가 장착된 경우 다음 명령을 사용하여 FAT16으로 포맷합니다.

mkfs.vfat -F 16 -n EFI-SP ${DEV}3
EFI-SP 파티션 포맷(Nvme SSD에만 해당)

따라서 시스템이 Nvme SSD를 사용하는 경우 다음 명령을 사용하여 세 번째 파티션을 쉽게 포맷할 수 있습니다.

mkfs.vfat -F 16 -n EFI-SP ${DEVP}3

8단계: 논리 볼륨 그룹 생성

LVM은 제가 가장 존경하는 기능 중 하나입니다. LVM 기능을 사용하지 않더라도 이를 활성화해도 시스템에 해를 끼치지는 않으며, 향후 LVM이 제공하는 기능이 필요하다면 문제 없이 사용할 수 있습니다.

여기서는 시스템 메모리가 부족할 때 디스크 공간을 사용하는 swap 파티션에 4GB를 할당하겠습니다. 또한 사용자가 디스크 공간을 최대한 활용할 수 있도록 여유 공간의 80%루트에 할당하고 있습니다.

물론 사용 사례에 따라 변경할 수 있으며 나중에 수정할 수도 있습니다. 주어진 명령을 하나씩 사용하면 시스템이 곧 LVM을 사용할 수 있게 됩니다:

pvcreate /dev/mapper/${DM}5_crypt
vgcreate ubuntu--vg /dev/mapper/${DM}5_crypt
lvcreate -L 4G -n swap_1 ubuntu--vg
lvcreate -l 80%FREE -n root ubuntu--vg

9단계: Ubuntu 설치 프로그램 시작

이제 Ubuntu 설치 프로그램을 시작할 시간입니다. 설치 프로그램을 최소화하면 홈 화면에서 설치 프로그램을 찾을 수 있습니다.

일반 설치 또는 최소 설치 여부는 귀하에게 달려 있지만 더 나은 경험을 얻으려면 일부 옵션을 선택해야 하며, 업데이트와 타사 드라이버 및 코덱을 설치하면 확실히 사용자 경험을 개선하고 비용을 절감할 수 있습니다. 설치 후 시간.

설치 유형 섹션에서 방금 수동으로 생성한 파티션을 관리하는 데 도움이 되는 "기타" 옵션을 선택하세요.

여기서는 동일한 이름을 가진 여러 파티션을 찾을 수 있습니다. 설치자가 촬영한 크기를 언급하므로 원본을 쉽게 식별할 수 있습니다. 이제 LUKS_BOOT부터 시작하겠습니다.

LUKS_BOOT을 선택하고 변경 버튼을 클릭하세요.

이제 첫 번째 옵션에서 Ext4 저널링 파일 시스템을 선택합니다. 파티션 포맷 옵션을 활성화하고 마운트 지점에서 /boot를 선택합니다.

마찬가지로 ubuntu–vg-root를 선택하고 변경 버튼을 클릭합니다. 여기에서 첫 번째 옵션에서 Ext4 저널링 파일 시스템을 선택합니다. 파티션 포맷 옵션을 활성화하고 마지막 옵션에서 “/ ” 옵션을 선택합니다.

이제 ubuntu–vg-swap_1을 선택하고 옵션 버튼을 클릭하세요. 스왑 영역 옵션을 선택하면 됩니다.

변경 사항을 완료하고 현재 위치를 선택하세요.

사용자를 생성한 후에는 새 사용자를 생성한 직후 일부 명령을 적용할 예정이므로 지금 설치 버튼을 클릭하지 마세요. 강력한 비밀번호를 사용하여 사용자를 생성합니다.

10단계: GRUB에서 암호화 활성화

사용자를 생성한 직후, 설치가 시작되기 전에 GRUB에서 암호화를 활성화할 것이므로 터미널을 열고 제공된 명령을 사용하십시오.

while [ ! -d /target/etc/default/grub.d ]; do sleep 1; done; echo "GRUB_ENABLE_CRYPTODISK=y" > /target/etc/default/grub.d/local.cfg

설치가 완료되면 부팅 가능한 드라이브를 사용해야 하는 몇 가지 변경 사항이 있으므로 계속 테스트를 클릭하세요.

11단계: Ubuntu 설치 후 구성

이 섹션에서는 드라이브를 마운트하고, 필요한 패키지를 설치하고, 암호화 작업을 위해 필요한 몇 가지 변경 작업을 수행합니다. 따라서 터미널을 열고 주어진 단계를 따르십시오.

Chroot 환경 생성

Chroot는 방금 Ubuntu를 설치한 파티션에 액세스하는 데 사용됩니다. 드라이브 마운트 및 chroot 환경 생성과 관련된 명령 중 하나를 사용하십시오.

mount /dev/mapper/ubuntu----vg-root /target
for n in proc sys dev etc/resolv.conf; do mount --rbind /$n /target/$n; done 
chroot /target
mount -a

Cryptsetup-initramfs 패키지 설치

Cryptsetup 패키지는 부팅 시 암호화된 파일의 잠금을 해제하며 다음 명령을 사용하여 쉽게 설치할 수 있습니다.

apt install -y cryptsetup-initramfs
키 파일 및 지원 스크립트 추가

키 파일은 암호 해독을 위해 비밀번호를 교차 확인하는 데 사용되며 역시 암호화된 파티션인 /boot/에 저장됩니다. 추가로 진행하려면 주어진 명령을 사용하십시오.

echo "KEYFILE_PATTERN=/etc/luks/*.keyfile" >> /etc/cryptsetup-initramfs/conf-hook 
echo "UMASK=0077" >> /etc/initramfs-tools/initramfs.conf 
키 파일을 생성하여 LUKS에 추가

512바이트의 키 파일을 생성하여 안전하게 만들고 암호화된 볼륨도 추가할 예정입니다. 주어진 명령을 활용하여 이를 달성할 수 있습니다:

mkdir /etc/luks
dd if=/dev/urandom of=/etc/luks/boot_os.keyfile bs=512 count=1
chmod u=rx,go-rwx /etc/luks
chmod u=r,go-rwx /etc/luks/boot_os.keyfile
boot_os.file 및 Crypttab에 키 추가(HDD 및 SATA SSD에만 해당)

시스템 암호화에 거의 가까워졌기 때문에 이는 마지막 단계 중 하나일 것으로 예상됩니다. boot_os.key 파일에 키를 추가하려면 다음 명령을 사용하세요.

cryptsetup luksAddKey ${DEV}1 /etc/luks/boot_os.keyfile
cryptsetup luksAddKey ${DEV}5 /etc/luks/boot_os.keyfile 

crypttab에 키를 추가하려면 다음 명령을 사용하십시오.

echo "LUKS_BOOT UUID=$(blkid -s UUID -o value ${DEV}1) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
echo "${DM}5_crypt UUID=$(blkid -s UUID -o value ${DEV}5) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
boot_os.file 및 Crypttab에 키 추가(Nvme SSD에만 해당)

Nvme SSD를 사용하는 경우 다음 명령을 활용하여 boot_os.file에 키를 추가할 수 있습니다.

cryptsetup luksAddKey ${DEVP}1 /etc/luks/boot_os.keyfile
cryptsetup luksAddKey ${DEVP}5 /etc/luks/boot_os.keyfile 

마찬가지로 crypttab에 키를 추가하려면 다음 명령을 사용하십시오.

echo "LUKS_BOOT UUID=$(blkid -s UUID -o value ${DEVP}1) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
echo "${DM}5_crypt UUID=$(blkid -s UUID -o value ${DEVP}5) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
초기ramfs 파일 업데이트

이제 다음 명령을 사용하여 잠금 해제 스크립트와 키 파일을 추가하므로 initialramfs 파일을 업데이트해 보겠습니다.

update-initramfs -u -k all

이제 시스템을 재부팅하면 시스템 부팅을 위한 GRUB 암호 프롬프트가 표시됩니다.

이 가이드의 주요 의도는 초보자도 Ubuntu에서 전체 디스크 암호화를 활성화하여 시스템을 보호할 수 있는 따라하기 쉬운 절차를 만드는 것이었습니다.