디스크 암호화는 저장된 데이터를 보호합니다. VPS에서는 호스트가 하이퍼바이저를 제어하므로 작정한 제공업체가 메모리를 읽는 것은 막을 수 없습니다. 암호화가 잘 해내는 일은 분실된 백업, 재활용된 디스크, 도난당하거나 압수된 스토리지로부터의 보호입니다. 시간을 쓰기 전에 그중 무엇을 방어하려는지 파악하세요.
무엇으로부터 보호할지 정하기
- 폐기되거나 복제된 디스크: 암호화가 크게 도움이 됩니다.
- 유출된 스냅샷: 키가 스냅샷과 함께 저장되지 않았다면 암호화가 도움이 됩니다.
- 실행 중인 시스템의 실시간 공격자: 볼륨이 잠금 해제된 상태이므로 암호화는 도움이 되지 않습니다.
- 악의적인 하이퍼바이저: VPS에서는 암호화가 도움이 되지 않습니다. 하드웨어를 완전히 제어하는 전용 서버가 더 강력한 선택입니다.
옵션 1: 암호화된 데이터 볼륨
시작하기에 가장 안전한 방법입니다. 두 번째 디스크를 연결하거나 루프 파일을 만들고 민감한 데이터를 거기에 보관하세요. 예제는 /dev/vdb라는 이름의 빈 장치를 사용합니다. 포맷하면 내용이 삭제되므로 장치 이름을 다시 확인하세요.
sudo apt install -y cryptsetup
sudo cryptsetup luksFormat /dev/vdb
sudo cryptsetup open /dev/vdb secure
sudo mkfs.ext4 /dev/mapper/secure
sudo mkdir -p /srv/secure
sudo mount /dev/mapper/secure /srv/secure
다시 닫으려면: sudo umount /srv/secure && sudo cryptsetup close secure.
옵션 2: 파일 기반 컨테이너
여분의 디스크가 없다면 파일을 컨테이너로 사용하세요.
sudo fallocate -l 20G /root/vault.img
sudo cryptsetup luksFormat /root/vault.img
sudo cryptsetup open /root/vault.img vault
sudo mkfs.ext4 /dev/mapper/vault
sudo mount /dev/mapper/vault /srv/vault
옵션 3: 원격 잠금 해제를 쓰는 루트 디스크
루트 디스크를 암호화하려면 네트워크가 올라오기 전, 부팅 시점에 암호를 입력할 방법이 필요합니다. 보통의 해법은 initramfs 안에 작은 SSH 서버(dropbear)를 두는 것입니다. 이는 제공업체가 사용자 지정 이미지 설치나 직접 파티션을 나눈 재설치를 허용하는지에 달려 있으므로 먼저 확인하세요. 많은 VPS 패널이 이를 허용하지 않으며, 실수하면 서버가 부팅되지 않을 수 있으므로 복구 수단을 준비해 두세요.
개요: 암호화된 루트로 설치하고, dropbear-initramfs를 추가하고, SSH 공개 키를 /etc/dropbear/initramfs/authorized_keys에 넣고, initramfs를 다시 생성한 다음, 재부팅하고 cryptroot-unlock으로 SSH를 통해 잠금을 해제합니다.
키를 올바르게 다루기
- 긴 암호를 사용하고 서버가 아닌 비밀번호 관리자에 보관하세요.
- LUKS 헤더를 백업하세요:
sudo cryptsetup luksHeaderBackup /dev/vdb --header-backup-file header.img. 오프라인에 보관하세요. - 같은 디스크에 저장된 키 파일로 자동 잠금 해제하지 마세요. 그러면 의미가 없어집니다.
- 부팅 시 잠금 해제를 한다는 것은 재부팅할 때 내가 있어야 한다는 뜻임을 기억하세요.