LUKS 전체 디스크 암호화: Linux 서버 설정 가이드
15분 소요 - 2026년 6월 5일

LUKS2 설정, LVM 레이아웃, 키 관리, Tang 및 TPM을 사용한 원격 잠금 해제, 강화 등을 포함하는 Linux 서버용 LUKS 전체 디스크 암호화입니다.
LUKS 전체 디스크 암호화 서버 가이드
LUKS(Linux Unified Key Setup)는 전체 Linux 블록 장치를 암호화하여 마스터 키 없이는 내용을 읽을 수 없게 합니다. 도난당한 드라이브, 폐기된 섀시, 잊혀진 백업 디스크: LUKS가 올바르게 설정되어 있다면 이러한 상황에서도 데이터가 노출되지 않습니다. 이 게시물에서는 LVM 레이아웃, 키 관리, 원격 잠금 해제, 그리고 사용자가 자신의 데이터에 접근하지 못하게 되는 장애 모드를 포함하여 서버에 LUKS 전체 디스크 암호화를 배포하는 방법을 다룹니다.
여기서 참조하는 구현은 CPU에 AES-NI가 탑재된 리눅스 서버에서, 암호화된 컨테이너 내에 LVM을 사용하는 LUKS2입니다. 이 조합은 모든 최신 워크로드를 처리할 수 있고 성능이 우수하며, HIPAA, PCI-DSS, GDPR 및 SOC 2의 저장 중 데이터(data-at-rest) 요구 사항을 충족합니다.
왜 LUKS2인가, 그리고 가장 먼저 확인해야 할 사항
LUKS는 dm-crypt를 사용하여 블록 장치 계층에서 암호화하며, 마스터 키는 LUKS 헤더 내의 키 슬롯에 저장됩니다. 이러한 분리는 중요합니다. 디스크를 다시 암호화하지 않고도 암호 문구를 변경하거나 새 키를 추가할 수 있기 때문입니다.
LUKS2가 현재 기본값입니다. 최대 32개의 키 슬롯, JSON 형식의 메타데이터, 온라인 재암호화, 그리고 --integrity 플래그를 통한 인증된 암호화를 지원합니다. LUKS1은 8개의 키 슬롯을 지원하며 구형 시스템에서는 문제없지만, 새로운 배포 환경에서는 LUKS2로 시작해야 합니다.
최신 하드웨어에서 AES-NI 사용 시 성능 오버헤드는 보통 5% 미만입니다. 시작하기 전에 다음을 확인하십시오:
grep -o aes /proc/cpuinfo | head -1
cryptsetup benchmark다음 명령어가 grep 아무것도 반환하지 않는다면, 해당 CPU에는 AES-NI가 없으며, I/O 부하가 높을 때 암호화가 CPU에 의존하게 됩니다. cryptsetup benchmark 명령어는 암호별 처리량을 표시하므로, 하드웨어가 지원하는 것 중 가장 빠른 것을 선택할 수 있습니다. 또한 cryptsetup이 설치되어 있는지, 그리고 dm-crypt 커널 모듈이 사용 가능한지 확인하십시오. 이 둘은 Ubuntu, Debian, RHEL 및 Arch에서 기본적으로 제공됩니다.
디스크 레이아웃
두 개의 파티션은 암호화되지 않은 상태로 유지됩니다: EFI 시스템 파티션(512MB FAT32)과 /boot (1~2 GB, ext4 또는 xfs)입니다. GRUB은 암호 문구를 요청하기 전에 이 두 파티션을 모두 읽어야 합니다. 그 외 모든 것은 LUKS 컨테이너 내에 위치합니다.
권장 레이아웃은 LUKS 내부의 LVM입니다. 즉, 하나의 LUKS 컨테이너가 LVM 볼륨 그룹을 포함하고, 루트, 스왑 및 모든 데이터 파티션을 위한 논리 볼륨을 포함하는 방식입니다. 이렇게 하면 LVM 메타데이터가 암호화된 상태로 유지되며, LUKS 계층을 건드리지 않고도 볼륨의 크기를 조정하거나 스냅샷을 생성할 수 있습니다. LUKS-on-LVM도 작동하지만, 이 경우 볼륨 그룹 구조가 노출됩니다.
| 파티션 | 크기 | 파일 시스템 | 암호화 |
|---|---|---|---|
| EFI 시스템 | 512MB ~ 1GB | FAT32 | 아니요 |
/boot | 1~2 GB | ext4 / xfs | 아니요 |
| LUKS 컨테이너 | 남은 공간 | LUKS2 | 예 |
| LVM 루트 | 20~100GB+ | ext4 / xfs | 예 (LUKS 내부) |
| LVM 스왑 | RAM과 동일 | 스왑 | 예 (LUKS 내부) |
ext4는 루트 볼륨에 대한 안전한 기본 설정입니다. xfs는 대용량 파일과 병렬 쓰기를 더 잘 처리하므로, 미디어, 머신 러닝 및 데이터베이스 서버에 적합합니다. SSD 및 NVMe의 경우 discard 옵션을 추가하여 /etc/crypttab TRIM을 활성화하십시오. TRIM은 사용 중인 섹터를 노출시키므로, 이는 사소한 정보 유출에 해당합니다. 대부분의 워크로드에서는 웨어 레벨링의 이점이 이를 상쇄할 만큼 가치가 있습니다. 위협 모델에 장치에 대한 포렌식 분석이 포함된다면, 이 기능을 비활성화하십시오.
LVM을 사용한 LUKS 설정
다음 명령어로 대상 디스크를 식별하고 lsblk 명령어로 대상 디스크를 식별하고 기존 메타데이터를 지웁니다:
wipefs -a /dev/sdX선택적으로 임의의 데이터로 덮어쓰기하여 암호화된 블록이 빈 공간과 구별되지 않도록 하십시오:
dd if=/dev/urandom of=/dev/sdX bs=1M status=progressLUKS2 컨테이너를 초기화합니다. --sector-size 4096 명령어를 사용하십시오:
cryptsetup luksFormat --type luks2 --sector-size 4096 /dev/sdX
cryptsetup luksOpen /dev/sdX cryptdata디스크에 데이터를 저장하기 전에 즉시 헤더를 백업하십시오:
cryptsetup luksHeaderBackup /dev/sdX --header-backup-file luks-header-backup.img잠금 해제된 컨테이너 위에 LVM을 생성한 후, 논리 볼륨을 포맷하십시오:
pvcreate /dev/mapper/cryptdata
vgcreate vg_secure /dev/mapper/cryptdata
lvcreate -L 50G -n lv_root vg_secure
lvcreate -L 8G -n lv_swap vg_secure
mkfs.xfs /dev/vg_secure/lv_root
mkswap /dev/vg_secure/lv_swap다음에 항목을 추가하십시오 /etc/crypttab 재부팅 시 변경될 수 있는 /dev/sdX재부팅 시 변경될 수 있으므로, UUID를 사용하여 항목을 추가하십시오. UUID는 blkid /dev/sdX:
cryptdata UUID=<your-uuid> none luks,discard다음 명령어로 UUID를 확인하십시오: /etc/fstab:
/dev/vg_secure/lv_root / xfs defaults,noatime 0 1부팅 시 암호화 훅이 로드되도록 initramfs를 재생성하십시오:
# Debian/Ubuntu
update-initramfs -u -k all
# RHEL/Fedora
dracut -f --regenerate-all재부팅 후 암호를 입력하고 다음 명령어로 설정을 확인하십시오 cryptsetup status cryptdata 와 lsblk -f. 후자의 경우 crypto_LUKS 가 표시되어야 합니다.
키 관리 및 원격 잠금 해제
LUKS2는 32개의 키 슬롯을 지원합니다. 처음부터 최소 세 가지를 사용하십시오: 관리자 암호, 오프라인에 저장된 복구 키(인쇄하여 잠금 장치에 보관하거나, 금고에 보관된 암호화된 USB에 저장), 그리고 보조 데이터 볼륨을 자동으로 잠금 해제하기 위한 키 파일입니다. 95개의 인쇄 가능한 ASCII 문자를 고수하십시오. 비 ASCII 문자는 부팅 프롬프트에서 키보드 레이아웃 문제를 일으키며, 이 문제를 디버그하는 것은 매우 번거롭습니다. 접근 권한이 있는 사람이 팀을 떠날 때마다 관리자 암호를 변경하십시오.
다음 명령어로 활성 슬롯을 확인하십시오: cryptsetup luksDump /dev/sdX를 사용하여 활성 슬롯을 확인하고, cryptsetup luksAddKey를 사용하여 키를 추가하고, cryptsetup luksKillSlot를 사용하여 키를 취소하십시오. 모든 키 파일은 엄격한 권한으로 보호하십시오:
chmod 0400 /etc/luks/keyfile.bin원격 데이터 센터의 헤드리스 서버의 경우, 암호 프롬프트가 문제가 됩니다. 이를 처리하는 세 가지 방법은 다음과 같습니다:
| 방법 | 가장 적합한 경우 | 장단점 |
|---|---|---|
| initramfs 내 Dropbear | SSH를 통한 수동 잠금 해제 | 재부팅 시 여전히 사람의 개입 필요 |
| Clevis + Tang (NBDE) | 신뢰할 수 있는 네트워크에서 자동 잠금 해제 | 부팅하려면 서버가 Tang 서버에 연결되어야 함 |
| systemd-cryptenroll을 통한 TPM2 | 하드웨어에 종속된 자동화 | 펌웨어 업데이트로 인해 PCR 값이 변경되어 접속이 차단될 수 있음 |
Dropbear는 initramfs 내에서 소형 SSH 서버를 실행합니다. 부팅 후 SSH로 접속하여 패스프레이즈를 수동으로 입력합니다. Clevis와 Tang은 네트워크 기반 디스크 암호화를 사용합니다: 서버는 신뢰할 수 있는 네트워크상의 Tang 서버에 연결될 수 있는 한 스스로 잠금을 해제합니다. Tang은 사용자의 키를 저장하지 않으며, McCallum-Relyea 교환의 절반을 제공합니다. sss pin을 통해 여러 Tang 서버를 사용하면, 한 대가 오프라인 상태여도 잠금 해제가 여전히 작동합니다. TPM 2.0 바인딩을 통해 systemd-cryptenroll 키를 PCR 7(보안 부팅 상태)에 바인딩하므로, 펌웨어와 부트로더가 변조되지 않은 경우에만 서버가 자동으로 잠금을 해제합니다. 펌웨어 업데이트 시 PCR 값이 변경될 수 있으므로, TPM을 사용할 때는 항상 패스프레이즈 키 슬롯을 대체 수단으로 유지하십시오.
보안 강화 및 잠금 방지
최소 20자 이상의 암호 구문을 사용하십시오. --integrity 시 luksFormat 를 사용하여 인증된 암호화를 활성화하십시오. 이는 쓰기 증폭(write amplification) 비용을 수반하므로 먼저 벤치마킹을 수행하십시오.
LUKS 컨테이너를 다른 컴퓨터에 복제하지 마십시오. 볼륨 키가 함께 복사되므로, 한 호스트에서 암호를 변경해도 다른 호스트는 보호되지 않습니다. 각 디스크를 개별적으로 다시 포맷하십시오.
안전한 폐기 시, cryptsetup erase /dev/sdX 모든 키 슬롯을 밀리초 단위로 지워, 물리적으로 파기하지 않고서는 디스크를 복구할 수 없게 만듭니다. 이 사실만으로도 모든 데이터를 기본적으로 암호화해야 할 강력한 근거가 됩니다.
일반적인 오류 유형:
| 증상 | 가능한 원인 | 해결 방법 |
|---|---|---|
| 부팅 중 암호 입력 화면에서 멈춤 | 키보드 레이아웃 불일치 | 레이아웃을 변경하거나 복구 키를 사용하십시오 |
| "장치가 유효한 LUKS 장치가 아닙니다" | 잘못된 장치 경로 | 파티션인지 전체 디스크인지 확인하십시오 lsblk 파티션인지 전체 디스크인지 확인 |
| 부팅 시 키보드 반응 없음 | Initramfs 후크 순서 | 위치 keyboard 앞에 encrypt in mkinitcpio.conf |
| GRUB에서 암호 입력 프롬프트가 생략됨 | GRUB_ENABLE_CRYPTODISK 설정되지 않음 | 설정 GRUB_ENABLE_CRYPTODISK=y 에서 /etc/default/grub, GRUB 재설치 |
| "루트 장치를 찾을 수 없음" | 누락됨 lvm2 또는 encrypt 훅 | 훅을 추가하고 실행 mkinitcpio -P |
가장 중요한 오류 유형은 헤더 손상입니다. LUKS 헤더가 손실되거나 손상되면 데이터는 영구적으로 사라집니다. 헤더 백업에서 복원하는 것 외에는 복구 방법이 없습니다. 별도의 저장 매체에 사본을 보관하십시오. 가급적이면 두 곳에 분산하여 보관하고, 절대로 암호화된 디스크 자체에는 저장하지 마십시오. 중요도가 낮은 보조 볼륨의 경우 nofail 를 /etc/crypttab 를 추가하여 마운트 실패 시 부팅이 중단되지 않도록 하십시오.
FDC 전용 서버는 기본적으로 AES-NI 및 전체 디스크 암호화를 지원하는 하드웨어와 함께 제공됩니다. 배포 준비가 되면 전용 서버를 구성하십시오.

느린 구축 과정이나 대역폭 제한에 지치셨나요? FDC Servers는 즉각적인 전용 인프라, 전 세계적인 서비스 범위, 그리고 어떤 규모에도 맞출 수 있는 유연한 요금제를 제공합니다. 업그레이드할 준비가 되셨나요?
지금 바로 성능을 극대화하세요
iperf3 튜토리얼: Linux 및 Windows에서 네트워크 속도 테스트하기
Linux 및 Windows에서 정확한 결과를 얻으려면 iperf3를 설치하고, 대역폭 테스트를 실행하며, TCP 버퍼를 조정하십시오. UDP, 양방향 및 10GbE+ 테스트를 다룹니다.
10분 소요 - 2026년 5월 7일

질문이 있거나 맞춤형 솔루션이 필요하신가요?
유연한 옵션
글로벌 도달 범위
즉시 배포
유연한 옵션
글로벌 도달 범위
즉시 배포