10.6. LUKS 암호화 볼륨의 자동 잠금 해제를 위해 NBDE 클라이언트 구성


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

사전 요구 사항

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

절차

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

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

    1. clevis-dracut 패키지를 설치합니다.

      # dnf install clevis-dracut
    2. 초기 RAM 디스크를 다시 생성합니다.

      # dracut -fv --regenerate-all --hostonly-cmdline
    3. 또는 /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
    4. Clevis가 설치된 시스템에서 grubby 툴을 사용하여 초기 부팅 시 Tang 핀의 네트워킹을 사용할 수 있는지 확인할 수도 있습니다.

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

검증

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

    # clevis luks list -d /dev/sda2
    1: tang '{"url":"http://tang.srv:port"}'
  2. 초기 부팅에 바인딩을 사용할 수 있는지 확인합니다. 예를 들면 다음과 같습니다.

    # 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
    …

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.