10.6. LUKS 암호화 볼륨의 자동 잠금 해제를 위해 NBDE 클라이언트 구성
Clevis 프레임워크를 사용하면 선택한 Tang 서버를 사용할 수 있을 때 LUKS 암호화 볼륨의 자동 잠금 해제를 위해 클라이언트를 구성할 수 있습니다. 그러면 NBDE(Network-Bound Disk Encryption) 배포가 생성됩니다.
사전 요구 사항
- Tang 서버가 실행 중이고 사용 가능합니다.
절차
기존 LUKS 암호화된 볼륨의 잠금을 자동으로 해제하려면
clevis-luks
하위 패키지를 설치합니다.# dnf install clevis-luks
PBD의 LUKS 암호화 볼륨을 식별합니다. 다음 예에서 블록 장치는 /dev/sda2 라고 합니다.
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 12G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 11G 0 part └─luks-40e20552-2ade-4954-9d56-565aa7994fb6 253:0 0 11G 0 crypt ├─rhel-root 253:0 0 9.8G 0 lvm / └─rhel-swap 253:1 0 1.2G 0 lvm [SWAP]
clevis luks bind
명령을 사용하여 볼륨을 Tang 서버에 바인딩합니다.# clevis luks bind -d /dev/sda2 tang '{"url":"http://tang.srv"}' The advertisement contains the following signing keys: _OsIk0T-E2l6qjfdDiwVmidoZjA Do you wish to trust these keys? [ynYN] y You are about to initialize a LUKS device for metadata storage. Attempting to initialize it may result in data loss if data was already written into the LUKS header gap in a different format. A backup is advised before initialization is performed. Do you wish to initialize /dev/sda2? [yn] y Enter existing LUKS password:
이 명령은 다음 네 가지 단계를 수행합니다.
- LUKS 마스터 키와 동일한 엔트로피를 사용하여 새 키를 만듭니다.
- Clevis를 사용하여 새 키를 암호화합니다.
- LUKS2 헤더에 Clevis JWE 오브젝트를 저장하거나 기본이 아닌 LUKS1 헤더가 사용되는 경우 LUKSMeta를 사용합니다.
- LUKS에 사용할 새 키를 활성화합니다.
참고바인딩 절차에서는 사용 가능한 LUKS 암호 슬롯이 하나 이상 있다고 가정합니다.
clevis luks bind
명령은 슬롯 중 하나를 사용합니다.이제 Clevis 정책과 함께 기존 암호를 사용하여 볼륨을 잠금 해제할 수 있습니다.
초기 부팅 시스템이 디스크 바인딩을 처리할 수 있도록 하려면 이미 설치된 시스템에서
dracut
툴을 사용합니다. RHEL에서 Clevis는 호스트별 구성 옵션 없이 일반initrd
(초기 RAM 디스크)를 생성하고 커널 명령줄에rd.neednet=1
과 같은 매개변수를 자동으로 추가하지 않습니다. 구성이 초기 부팅 중에 네트워크가 필요한 Tang 핀을 사용하는 경우--hostonly-cmdline
인수를 사용하고dracut
은 Tang 바인딩을 감지할 때rd.neednet=1
을 추가합니다.clevis-dracut
패키지를 설치합니다.# dnf install clevis-dracut
초기 RAM 디스크를 다시 생성합니다.
# dracut -fv --regenerate-all --hostonly-cmdline
또는
/etc/dracut.conf.d/
디렉터리에 .conf 파일을 생성하고hostonly_cmdline=yes
옵션을 파일에 추가합니다. 그런 다음--hostonly-cmdline
없이dracut
을 사용할 수 있습니다. 예를 들면 다음과 같습니다.# echo "hostonly_cmdline=yes" > /etc/dracut.conf.d/clevis.conf # dracut -fv --regenerate-all
Clevis가 설치된 시스템에서
grubby
툴을 사용하여 초기 부팅 시 Tang 핀의 네트워킹을 사용할 수 있는지 확인할 수도 있습니다.# grubby --update-kernel=ALL --args="rd.neednet=1"
검증
Clevis JWE 오브젝트가 LUKS 헤더에 성공적으로 배치되었는지 확인하고
clevis luks list
명령을 사용합니다.# clevis luks list -d /dev/sda2 1: tang '{"url":"http://tang.srv:port"}'
초기 부팅에 바인딩을 사용할 수 있는지 확인합니다. 예를 들면 다음과 같습니다.
# lsinitrd | grep clevis-luks lrwxrwxrwx 1 root root 48 Jan 4 02:56 etc/systemd/system/cryptsetup.target.wants/clevis-luks-askpass.path -> /usr/lib/systemd/system/clevis-luks-askpass.path …
추가 리소스
-
시스템의 Clevis-luks-bind(1)
및dracut.cmdline(7)
도움말 페이지 - 네트워크 부팅 옵션
- 초기 램디스크 (initrd)에서 Linux 네트워크 구성 을 예상 (Red Hat Enable Sysadmin)