Red Hat Training

A Red Hat training course is available for RHEL 8

11.7. LUKS 암호화 볼륨 수동 등록 구성

Clevis 프레임워크를 사용하면 선택한 Tang 서버를 사용할 수 있을 때 LUKS 암호화 볼륨의 자동 잠금 해제를 위해 클라이언트를 구성할 수 있습니다. 그러면 NBDE(Network-Bound Disk Encryption) 배포가 생성됩니다.

사전 요구 사항

  • Tang 서버가 실행 중이고 사용 가능합니다.

절차

  1. 기존 LUKS 암호화된 볼륨의 잠금을 자동으로 해제하려면 clevis-luks 하위 패키지를 설치합니다.

    # yum install clevis-luks
  2. 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]
  3. 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:

    이 명령은 다음 네 가지 단계를 수행합니다.

    1. LUKS 마스터 키와 동일한 엔트로피를 사용하여 새 키를 만듭니다.
    2. Clevis를 사용하여 새 키를 암호화합니다.
    3. LUKS2 헤더에 Clevis JWE 오브젝트를 저장하거나 기본이 아닌 LUKS1 헤더가 사용되는 경우 LUKSMeta를 사용합니다.
    4. LUKS에 사용할 새 키를 활성화합니다.
    참고

    바인딩 절차에서는 사용 가능한 LUKS 암호 슬롯이 하나 이상 있다고 가정합니다. clevis luks bind 명령은 슬롯 중 하나를 사용합니다.

    이제 Clevis 정책과 함께 기존 암호를 사용하여 볼륨을 잠금 해제할 수 있습니다.

  4. 초기 부팅 시스템이 디스크 바인딩을 처리할 수 있도록 하려면 이미 설치된 시스템에서 dracut 툴을 사용합니다.

    # yum install clevis-dracut

    RHEL에서 Clevis는 호스트별 구성 옵션 없이 일반 initrd (초기 RAM 디스크)를 생성하고 커널 명령줄에 rd.neednet=1 과 같은 매개변수를 자동으로 추가하지 않습니다. 구성이 초기 부팅 중에 네트워크가 필요한 Tang 핀을 사용하는 경우 --hostonly-cmdline 인수를 사용하고 dracut 은 Tang 바인딩을 감지할 때 rd.neednet=1 을 추가합니다.

    # dracut -fv --regenerate-all --hostonly-cmdline

    또는 /etc/dracut.conf.d/ 에 .conf 파일을 생성하고 hostonly_cmdline=yes 옵션을 파일에 추가합니다. 예를 들면 다음과 같습니다.

    # echo "hostonly_cmdline=yes" > /etc/dracut.conf.d/clevis.conf
    참고

    Clevis가 설치된 시스템에서 grubby 툴을 사용하여 초기 부팅 시 Tang 핀의 네트워킹을 사용할 수 있는지 확인할 수도 있습니다.

    # grubby --update-kernel=ALL --args="rd.neednet=1"

    그런 다음 --hostonly-cmdline 없이 dracut 을 사용할 수 있습니다.

    # dracut -fv --regenerate-all

검증

  1. Clevis JWE 오브젝트가 LUKS 헤더에 성공적으로 배치되었는지 확인하려면 clevis luks list 명령을 사용합니다.

    # clevis luks list -d /dev/sda2
    1: tang '{"url":"http://tang.srv:port"}'
중요

고정 IP 구성(DHCP 제외)이 있는 클라이언트에 대해 DASD를 사용하려면 네트워크 구성을 수동으로 dracut 툴에 전달합니다. 예를 들면 다음과 같습니다.

# dracut -fv --regenerate-all --kernel-cmdline "ip=192.0.2.10::192.0.2.1:255.255.255.0::ens3:none"

또는 정적 네트워크 정보를 사용하여 /etc/dracut.conf.d/ 디렉터리에 .conf 파일을 만듭니다. 예를 들어 다음과 같습니다.

# cat /etc/dracut.conf.d/static_ip.conf
kernel_cmdline="ip=192.0.2.10::192.0.2.1:255.255.255.0::ens3:none"

초기 RAM 디스크 이미지를 다시 생성합니다.

# dracut -fv --regenerate-all

추가 리소스