18.14. 정책 기반 암호 해독을 사용하여 암호화된 볼륨의 자동 잠금 해제 구성
정책 기반 암호 해독(Policy-Based Decryption)은 물리적 및 가상 머신에서 암호화된 루트 및 보조 드라이브의 하드 드라이브의 잠금을 해제할 수 있는 기술 컬렉션입니다. PBD는 사용자 암호, 신뢰할 수 있는 플랫폼 모듈(TPM) 장치, 시스템에 연결된 PKCS #11 장치(예: 스마트 카드 또는 특수 네트워크 서버)와 같은 다양한 잠금 해제 방법을 사용합니다.
PBD를 사용하면 다른 잠금 해제 방법을 정책에 결합하여 동일한 볼륨을 다른 방식으로 잠금 해제할 수 있습니다. RHEL에서 PBD의 현재 구현은 Clevis 프레임워크와 pins라는 플러그인으로 구성되어 있습니다. 각 핀은 별도의 잠금 해제 기능을 제공합니다. 현재 다음 핀을 사용할 수 있습니다.
Tang
- 네트워크 서버를 사용하여 볼륨 잠금을 허용합니다.
tpm2
- TPM2 정책을 사용하여 볼륨 잠금을 허용합니다.
sss
- Shamir의 Secret Sharing (SSS) 암호화 체계를 사용하여 고가용성 시스템을 배포할 수 있습니다.
18.14.1. 네트워크 바인딩 디스크 암호화 링크 복사링크가 클립보드에 복사되었습니다!
NBDE(Network Bound Disc Encryption)는 암호화된 볼륨을 특수 네트워크 서버에 바인딩할 수 있는 정책 기반 암호 해독(Policy-Based Decryption)의 하위 범주입니다. Clevis의 현재 구현에는 Tang 서버 및 Tang 서버 자체에 대한 Clevis 핀이 포함되어 있습니다.
RHEL에서 NBDE는 다음 구성 요소 및 기술을 통해 구현됩니다.
그림 18.1. LUKS1 암호화 볼륨을 사용할 때의 NBDE 스키마입니다 luksmeta 패키지는 LUKS2 볼륨에 사용되지 않습니다.
Tang은 데이터를 네트워크 상에 바인딩하는 서버입니다. 시스템이 특정 보안 네트워크에 바인딩될 때 데이터를 포함하는 시스템을 사용할 수 있습니다. Tang은 상태 비저장이며 TLS 또는 인증이 필요하지 않습니다. 서버가 모든 암호화 키를 저장하고 사용된 모든 키에 대한 지식이 있는 에스크로 기반 솔루션과 달리 Tang은 클라이언트 키와 상호 작용하지 않으므로 클라이언트로부터 식별 정보를 얻을 수 없습니다.
Clevis는 자동 암호 해독을 위한 플러그형 프레임워크입니다. KnativeServing에서 Clevis는 LUKS 볼륨의 자동 잠금을 해제하는 기능을 제공합니다. clevis
패키지는 기능의 클라이언트 측면을 제공합니다.
Clevis PIN은 Clevis 프레임워크의 플러그인입니다. 이러한 핀 중 하나는 NBDE 서버 - Tang과의 상호 작용을 구현하는 플러그인입니다.
Clevis 및 Tang은 네트워크 바인딩 암호화를 제공하는 일반 클라이언트 및 서버 구성 요소입니다. RHEL에서는 LUKS와 함께 네트워크-Bound 디스크 암호화를 수행하기 위해 루트 및 루트가 아닌 스토리지 볼륨을 암호화하고 암호 해독하는 데 사용됩니다.
클라이언트 및 서버 측 구성 요소 모두 José 라이브러리를 사용하여 암호화 및 암호 해독 작업을 수행합니다.
Clevis 프로비저닝을 시작할 때 Tang 서버의 Clevis 핀은 Tang 서버의 공개된 symmetric 키 목록을 가져옵니다. 또는 키가 symmetric이므로 Tang의 공개 키 목록을 대역에서 배포할 수 있으므로 클라이언트가 Tang 서버에 액세스하지 않고도 작동할 수 있습니다. 이 모드를 오프라인 프로비저닝 이라고 합니다.
Tang의 Clevis 핀은 공개 키 중 하나를 사용하여 고유하고 암호화 방식으로 암호화 키를 생성합니다. 이 키를 사용하여 데이터를 암호화하면 키가 삭제됩니다. Clevis 클라이언트는 이 프로비저닝 작업에서 생성한 상태를 편리한 위치에 저장해야 합니다. 데이터를 암호화하는 이 프로세스는 프로비저닝 단계입니다.
LUKS 버전 2(LUKS2)는 RHEL의 기본 disk-encryption 형식입니다. 따라서 Clevis의 프로비저닝 상태는 LUKS2 헤더에 토큰으로 저장됩니다. luksmeta
패키지에 의해 NBDE의 프로비저닝 상태를 활용하는 것은 LUKS1로 암호화된 볼륨에만 사용됩니다.
Tang의 Clevis 핀은 사양 없이 LUKS1 및 LUKS2를 모두 지원합니다. Clevis는 일반 텍스트 파일을 암호화할 수 있지만 block 장치를 암호화하기 위해 cryptsetup
툴을 사용해야 합니다. 자세한 내용은 LUKS를 사용하여 블록 장치 암호화를 참조하십시오.
클라이언트가 데이터에 액세스할 준비가 되면 프로비저닝 단계에서 생성된 메타데이터를 로드하고 암호화 키를 복구할 수 있습니다. 이 과정은 회복 단계입니다.
Clevis는 자동으로 잠금 해제될 수 있도록 핀을 사용하여 LUKS 볼륨을 바인딩합니다. 바인딩 프로세스가 성공적으로 완료되면 제공된 Dracut unlocker를 사용하여 디스크의 잠금을 해제할 수 있습니다.
kdump
커널 크래시 덤프 메커니즘이 시스템 메모리의 콘텐츠를 LUKS 암호화 장치에 저장하도록 설정된 경우 두 번째 커널 부팅 중에 암호를 입력하라는 메시지가 표시됩니다.
18.14.2. 강제 모드에서 SELinux를 사용하여 Tang 서버 배포 링크 복사링크가 클립보드에 복사되었습니다!
Tang 서버를 사용하여 Clevis 지원 클라이언트에서 LUKS 암호화 볼륨을 자동으로 잠금 해제할 수 있습니다. 최소 시나리오에서는 tang
패키지를 설치하고 systemctl enable tangd.socket --now
명령을 입력하여 포트 80에 Tang 서버를 배포합니다. 다음 예제 절차에서는 사용자 지정 포트에서 실행되는 Tang 서버를 SELinux 강제 모드에서 제한된 서비스로 배포하는 방법을 보여줍니다.
사전 요구 사항
-
policycoreutils-python-utils
패키지 및 해당 종속 항목이 설치됩니다. -
firewalld
서비스가 실행 중입니다.
프로세스
tang
패키지 및 해당 종속 항목을 설치하려면root
로 다음 명령을 입력합니다.yum install tang
# yum install tang
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (예: 7500/tcp ) .occupied 포트를 선택하고
tangd
서비스가 해당 포트에 바인딩되도록 허용합니다.semanage port -a -t tangd_port_t -p tcp 7500
# semanage port -a -t tangd_port_t -p tcp 7500
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 포트는 한 번에 하나의 서비스에서만 사용할 수 있으므로 이미 사용되고 있는 포트를 사용하려는 경우
ValueError를 의미합니다. 포트가 이미 정의된
오류 메시지입니다.방화벽에서 포트를 엽니다.
firewall-cmd --add-port=7500/tcp firewall-cmd --runtime-to-permanent
# firewall-cmd --add-port=7500/tcp # firewall-cmd --runtime-to-permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tangd
서비스를 활성화합니다.systemctl enable tangd.socket
# systemctl enable tangd.socket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 덮어쓰기 파일을 생성합니다.
systemctl edit tangd.socket
# systemctl edit tangd.socket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 편집기 화면에서
/etc/systemd/system/tangd.socket.d/
디렉터리에 있는 빈override.conf
파일을 열고 다음 행을 추가하여 Tang 서버의 기본 포트를 80에서 이전에 선택한 숫자로 변경합니다.[Socket] ListenStream= ListenStream=7500
[Socket] ListenStream= ListenStream=7500
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요이 아래에
있는 줄과# 줄 사이에 이전
코드 조각을 삽입합니다. 그렇지 않으면 시스템은 변경 사항을 삭제합니다.-
변경 사항을 저장하고 편집기를 종료합니다. 기본
vi
편집기에서 Esc 를 눌러 명령 모드로 전환하고:wq
를 입력한 후 Enter 키를 눌러 수행할 수 있습니다. 변경된 구성을 다시 로드합니다.
systemctl daemon-reload
# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성이 작동하는지 확인합니다.
systemctl show tangd.socket -p Listen
# systemctl show tangd.socket -p Listen Listen=[::]:7500 (Stream)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tangd
서비스를 시작합니다.systemctl restart tangd.socket
# systemctl restart tangd.socket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tangd
는systemd
소켓 활성화 메커니즘을 사용하므로 첫 번째 연결이 들어오는 즉시 서버가 시작됩니다. 새로 생성된 암호화 키 세트는 처음 시작할 때 자동으로 생성됩니다. 수동 키 생성과 같은 암호화 작업을 수행하려면jose
유틸리티를 사용합니다.
검증
NBDE 클라이언트에서 다음 명령을 사용하여 Tang 서버가 올바르게 작동하는지 확인합니다. 명령은 암호화 및 암호 해독을 위해 전달하는 동일한 메시지를 반환해야 합니다.
echo test | clevis encrypt tang '{"url":"<tang.server.example.com:7500>"}' -y | clevis decrypt
# echo test | clevis encrypt tang '{"url":"<tang.server.example.com:7500>"}' -y | clevis decrypt test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.14.3. 클라이언트에서 Tang 서버 키 교체 및 바인딩 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
보안상의 이유로 Tang 서버 키를 교체하고 클라이언트에서 기존 바인딩을 정기적으로 업데이트합니다. 교체해야하는 정확한 간격은 애플리케이션, 키 크기 및 기관 정책에 따라 다릅니다.
또는 nbde_server
RHEL 시스템 역할을 사용하여 Tang 키를 교체할 수 있습니다. 자세한 내용은 nbde_server 시스템 역할을 사용하여 여러 Tang 서버 설정을 참조하십시오.
사전 요구 사항
- Tang 서버가 실행 중입니다.
-
clevis
및clevis-luks
패키지가 클라이언트에 설치됩니다. -
clevis luks list
,clevis luks report
,clevis luks regen
은 RHEL 8.2에서 도입되었습니다.
프로세스
/var/db/tang
키 데이터베이스 디렉터리의 모든 키 이름을 앞에.
로 바꿔서 광고에서 숨길 수 있습니다. 다음 예제의 파일 이름은 Tang 서버의 키 데이터베이스 디렉터리에 있는 고유한 파일 이름과 다릅니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이름이 변경되었고, 따라서 Tang 서버 광고에서 모든 키를 숨겼는지 확인합니다.
ls -l
# ls -l total 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Tang 서버의
/var/db/tang
에서/usr/libexec/tangd-keygen
명령을 사용하여 새 키를 생성합니다./usr/libexec/tangd-keygen /var/db/tang ls /var/db/tang
# /usr/libexec/tangd-keygen /var/db/tang # ls /var/db/tang 3ZWS6-cDrCG61UPJS2BMmPU4I54.jwk zyLuX6hijUy_PSeUEFDi7hi38.jwk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Tang 서버가 새 키 쌍에서 서명 키를 알리는지 확인합니다. 예를 들면 다음과 같습니다.
tang-show-keys 7500
# tang-show-keys 7500 3ZWS6-cDrCG61UPJS2BMmPU4I54
Copy to Clipboard Copied! Toggle word wrap Toggle overflow EgressIP 클라이언트에서
clevis luks report
명령을 사용하여 Tang 서버에서 광고하는 키가 동일하게 남아 있는지 확인합니다. 다음과 같이clevis luks list
명령을 사용하여 관련 바인딩으로 슬롯을 식별할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 키에 대해 LUKS 메타데이터를 다시 생성하려면 이전 명령의 프롬프트에
y
를 누르거나clevis luks regen
명령을 사용합니다.clevis luks regen -d /dev/sda2 -s 1
# clevis luks regen -d /dev/sda2 -s 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 이전 클라이언트가 새 키를 사용하도록 확신하면 Tang 서버에서 이전 키를 제거할 수 있습니다. 예를 들면 다음과 같습니다.
cd /var/db/tang rm .*.jwk
# cd /var/db/tang # rm .*.jwk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
클라이언트가 계속 사용하는 동안 이전 키를 제거하면 데이터 손실이 발생할 수 있습니다. 실수로 이러한 키를 제거하는 경우 클라이언트에서 clevis luks regen
명령을 사용하고 수동으로 LUKS 암호를 제공하십시오.
18.14.4. 웹 콘솔에서 Tang 키를 사용하여 자동 잠금 해제 구성 링크 복사링크가 클립보드에 복사되었습니다!
Tang 서버에서 제공하는 키를 사용하여 LUKS 암호화 스토리지 장치의 자동 잠금 해제를 구성할 수 있습니다.
사전 요구 사항
- RHEL 8 웹 콘솔을 설치했습니다.
- cockpit 서비스를 활성화했습니다.
사용자 계정이 웹 콘솔에 로그인할 수 있습니다.
자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.
-
cockpit-storaged
및clevis-luks
패키지가 시스템에 설치됩니다. -
cockpit.socket
서비스는 포트 9090에서 실행됩니다. - Tang 서버를 사용할 수 있습니다. 자세한 내용은 강제 모드에서 SELinux를 사용하여 Tang 서버 배포를 참조하십시오.
-
sudo
를 사용하여 관리 명령을 입력할 수 있는루트
권한 또는 권한이 있습니다.
프로세스
RHEL 8 웹 콘솔에 로그인합니다.
자세한 내용은 웹 콘솔에 로그인 을 참조하십시오.
- 관리 액세스로 전환하고 자격 증명을 제공하고 스토리지를 스토리지 테이블에서 잠금 해제를 위해 추가할 암호화된 볼륨이 포함된 디스크를 클릭합니다. .
선택한 디스크에 대한 세부 정보가 있는 다음 페이지에서 Keys 섹션에서 를 클릭하여 Tang 키를 추가합니다.
Tang 키 서버
를키 소스로
선택하고 Tang 서버의 주소 및 LUKS 암호화 장치를 잠금 해제하는 암호를 제공합니다. 를 클릭하여 확인합니다.다음 대화 상자 창에서 키 해시가 일치하는지 확인하는 명령을 제공합니다.
Tang 서버의 터미널에서
tang-show-keys
명령을 사용하여 비교할 키 해시를 표시합니다. 이 예에서 Tang 서버는 포트 7500에서 실행되고 있습니다.tang-show-keys 7500
# tang-show-keys 7500 x100_1k6GPiDOaMlL3WbpCjHOy9ul1bSfdhI3M08wO0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 웹 콘솔의 키 해시와 이전에 나열된 명령의 출력에서와 이전에 나열된 명령의 출력에서 신뢰 키를 클릭하면
를 클릭합니다.-
RHEL 8.8 이상에서는 암호화된 루트 파일 시스템 및 Tang 서버를 선택한 후 커널 명령줄에
rd.neednet=1
매개변수 추가를 건너뛰고clevis-dracut
패키지를 설치하고 초기 RAM 디스크(Initrd )를 다시 생성할 수 있습니다.루트가 아닌 파일 시스템의 경우 웹 콘솔에서
remote-cryptsetup.target
및clevis-luks-akspass.path
systemd
장치를 활성화하고clevis-systemd
패키지를 설치하고_netdev
매개 변수를fstab
및crypttab
구성 파일에 추가합니다.
검증
새로 추가된 Tang 키가
Keyserver
유형의 Keys 섹션에 나열되어 있는지 확인합니다.초기 부팅에 바인딩을 사용할 수 있는지 확인합니다. 예를 들면 다음과 같습니다.
lsinitrd | grep clevis-luks
# 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 …
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.14.5. 기본 Clevis 및 TPM2 암호화-클라이언트 작업 링크 복사링크가 클립보드에 복사되었습니다!
Clevis 프레임워크는 일반 텍스트 파일을 암호화하고 JSON 웹 암호화(JWE) 형식과 LUKS 암호화 블록 장치의 암호화 텍스트를 모두 해독할 수 있습니다. Clevis 클라이언트는 암호화 작업을 위해 Tang 네트워크 서버 또는 신뢰할 수 있는 Platform Module 2.0(TPM 2.0) 칩을 사용할 수 있습니다.
다음 명령은 일반 텍스트 파일을 포함하는 예제의 Clevis에서 제공하는 기본 기능을 보여줍니다. Clevis 또는 Clevis+TPM 배포 문제를 해결하는 데도 사용할 수 있습니다.
Tang 서버에 바인딩된 암호화 클라이언트
Clevis 암호화 클라이언트가 Tang 서버에 바인딩되는지 확인하려면
clevis encrypt tang
하위 명령을 사용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 위 예제의
http://tang.srv:port
URL을tang
이 설치된 서버의 URL과 일치하도록 변경합니다.secret.jwe
출력 파일에는 JWE 형식의 암호화된 암호 텍스트가 포함되어 있습니다. 이 암호화 방식 텍스트는input-plain.txt
입력 파일에서 읽습니다.또는 구성에 SSH 액세스 권한이 없는 Tang 서버와의 비대화형 통신이 필요한 경우 광고를 다운로드하여 파일에 저장할 수 있습니다.
curl -sfg http://tang.srv:port/adv -o adv.jws
$ curl -sfg http://tang.srv:port/adv -o adv.jws
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 파일 또는 메시지의 암호화와 같은 다음 작업에 대해
adv.jws
파일의 광고를 사용합니다.echo 'hello' | clevis encrypt tang '{"url":"http://tang.srv:port","adv":"adv.jws"}'
$ echo 'hello' | clevis encrypt tang '{"url":"http://tang.srv:port","adv":"adv.jws"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 데이터의 암호를 해독하려면
clevis decrypt
명령을 사용하여 JWE(암호화 텍스트)를 제공합니다.clevis decrypt < secret.jwe > output-plain.txt
$ clevis decrypt < secret.jwe > output-plain.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
TPM 2.0을 사용하는 암호화 클라이언트
TPM 2.0 칩을 사용하여 암호화하려면 JSON 구성 개체 형식의 유일한 인수와 함께
clevis encrypt tpm2
하위 명령을 사용하십시오.clevis encrypt tpm2 '{}' < input-plain.txt > secret.jwe
$ clevis encrypt tpm2 '{}' < input-plain.txt > secret.jwe
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다른 계층 구조, 해시 및 키 알고리즘을 선택하려면 구성 속성을 지정합니다.
clevis encrypt tpm2 '{"hash":"sha256","key":"rsa"}' < input-plain.txt > secret.jwe
$ clevis encrypt tpm2 '{"hash":"sha256","key":"rsa"}' < input-plain.txt > secret.jwe
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 데이터의 암호를 해독하려면 JSON 웹 암호화(JWE) 형식으로 암호화 텍스트를 제공합니다.
clevis decrypt < secret.jwe > output-plain.txt
$ clevis decrypt < secret.jwe > output-plain.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
또한 핀은 PCR(Platform Configuration Registers) 상태에 대한 데이터 잠금을 지원합니다. 이렇게 하면 PCR 해시 값이 봉인할 때 사용된 정책과 일치하는 경우에만 데이터를 봉인 해제할 수 있습니다.
예를 들어 SHA-256 뱅크의 인덱스 0과 7로 PCR에 데이터를 봉인하려면 다음과 같이 하십시오.
clevis encrypt tpm2 '{"pcr_bank":"sha256","pcr_ids":"0,7"}' < input-plain.txt > secret.jwe
$ clevis encrypt tpm2 '{"pcr_bank":"sha256","pcr_ids":"0,7"}' < input-plain.txt > secret.jwe
PCR의 해시는 다시 작성할 수 있으며 더 이상 암호화된 볼륨을 잠금 해제할 수 없습니다. 따라서 PCR의 값이 변경된 경우에도 암호화된 볼륨을 수동으로 잠금 해제할 수 있는 강력한 암호를 추가합니다.
shim-x64
패키지를 업그레이드한 후 시스템이 암호화된 볼륨을 자동으로 잠금 해제할 수 없는 경우 Red Hat Knowledgebase 솔루션 Clevis TPM2가 다시 시작한 후 LUKS 장치의 암호를 해독하지 않음을 참조하십시오.
18.14.6. LUKS 암호화 볼륨의 자동 잠금 해제를 위해 NBDE 클라이언트 구성 링크 복사링크가 클립보드에 복사되었습니다!
Clevis 프레임워크를 사용하면 선택한 Tang 서버를 사용할 수 있을 때 LUKS 암호화 볼륨의 자동 잠금 해제를 위해 클라이언트를 구성할 수 있습니다. 그러면 NBDE(Network-Bound Disk Encryption) 배포가 생성됩니다.
사전 요구 사항
- Tang 서버가 실행 중이고 사용 가능합니다.
프로세스
기존 LUKS 암호화된 볼륨의 잠금을 자동으로 해제하려면
clevis-luks
하위 패키지를 설치합니다.yum install clevis-luks
# yum install clevis-luks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PBD의 LUKS 암호화 볼륨을 식별합니다. 다음 예에서 블록 장치는 /dev/sda2 라고 합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow clevis luks bind
명령을 사용하여 볼륨을 Tang 서버에 바인딩합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 다음 네 가지 단계를 수행합니다.
- 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
패키지를 설치합니다.yum install clevis-dracut
# yum install clevis-dracut
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 초기 RAM 디스크를 다시 생성합니다.
dracut -fv --regenerate-all --hostonly-cmdline
# dracut -fv --regenerate-all --hostonly-cmdline
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 또는
/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
# echo "hostonly_cmdline=yes" > /etc/dracut.conf.d/clevis.conf # dracut -fv --regenerate-all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Clevis가 설치된 시스템에서
grubby
툴을 사용하여 초기 부팅 시 Tang 핀의 네트워킹을 사용할 수 있는지 확인할 수도 있습니다.grubby --update-kernel=ALL --args="rd.neednet=1"
# grubby --update-kernel=ALL --args="rd.neednet=1"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
Clevis JWE 오브젝트가 LUKS 헤더에 성공적으로 배치되었는지 확인하고
clevis luks list
명령을 사용합니다.clevis luks list -d /dev/sda2
# clevis luks list -d /dev/sda2 1: tang '{"url":"http://tang.srv:port"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 초기 부팅에 바인딩을 사용할 수 있는지 확인합니다. 예를 들면 다음과 같습니다.
lsinitrd | grep clevis-luks
# 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 …
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.14.7. 고정 IP 구성을 사용하여 NBDE 클라이언트 구성 링크 복사링크가 클립보드에 복사되었습니다!
고정 IP 구성(DHCP 제외)이 있는 클라이언트에 대해 NBDE를 사용하려면 네트워크 구성을 dracut
툴에 수동으로 전달해야 합니다.
사전 요구 사항
- Tang 서버가 실행 중이고 사용 가능합니다.
NBDE 클라이언트는 Tang 서버에서 암호화된 볼륨의 자동 잠금 해제를 수행하도록 구성됩니다.
자세한 내용은 LUKS 암호화 볼륨의 자동 잠금 해제를 위해 NBDE 클라이언트 구성 을 참조하십시오.
프로세스
정적 네트워크 구성을
dracut
명령에서kernel-cmdline
옵션 값으로 제공할 수 있습니다. 예를 들면 다음과 같습니다.dracut -fv --regenerate-all --kernel-cmdline "ip=192.0.2.10::192.0.2.1:255.255.255.0::ens3:none nameserver=192.0.2.100"
# dracut -fv --regenerate-all --kernel-cmdline "ip=192.0.2.10::192.0.2.1:255.255.255.0::ens3:none nameserver=192.0.2.100"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 또는 정적 네트워크 정보를 사용하여
/etc/dracut.conf.d/
디렉터리에 .conf 파일을 생성한 다음 초기 RAM 디스크 이미지를 다시 생성합니다.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 nameserver=192.0.2.100" dracut -fv --regenerate-all
# 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 nameserver=192.0.2.100" # dracut -fv --regenerate-all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.14.8. TPM 2.0 정책을 사용하여 LUKS 암호화 볼륨 수동 등록 구성 링크 복사링크가 클립보드에 복사되었습니다!
신뢰할 수 있는 플랫폼 모듈 2.0(TPM 2.0) 정책을 사용하여 LUKS 암호화 볼륨의 잠금을 구성할 수 있습니다.
사전 요구 사항
- 액세스 가능한 TPM 2.0 호환 장치.
- 64비트 Intel 또는 64비트 AMD 아키텍처가 있는 시스템.
프로세스
기존 LUKS 암호화된 볼륨의 잠금을 자동으로 해제하려면
clevis-luks
하위 패키지를 설치합니다.yum install clevis-luks
# yum install clevis-luks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PBD의 LUKS 암호화 볼륨을 식별합니다. 다음 예에서 블록 장치는 /dev/sda2 라고 합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow clevis luks bind
명령을 사용하여 TPM 2.0 장치에 볼륨을 바인딩합니다. 예를 들면 다음과 같습니다.clevis luks bind -d /dev/sda2 tpm2 '{"hash":"sha256","key":"rsa"}'
# clevis luks bind -d /dev/sda2 tpm2 '{"hash":"sha256","key":"rsa"}' ... Do you wish to initialize /dev/sda2? [yn] y Enter existing LUKS password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 다음 네 가지 단계를 수행합니다.
- LUKS 마스터 키와 동일한 엔트로피를 사용하여 새 키를 만듭니다.
- Clevis를 사용하여 새 키를 암호화합니다.
- LUKS2 헤더에 Clevis JWE 오브젝트를 저장하거나 기본이 아닌 LUKS1 헤더가 사용되는 경우 LUKSMeta를 사용합니다.
LUKS에 사용할 새 키를 활성화합니다.
참고바인딩 절차에서는 사용 가능한 LUKS 암호 슬롯이 하나 이상 있다고 가정합니다.
clevis luks bind
명령은 슬롯 중 하나를 사용합니다.또는 데이터를 특정 플랫폼 구성 등록 (PCR) 상태로 전환하려는 경우
pcr_bank
및pcr_ids
값을clevis luks bind
명령에 추가합니다.clevis luks bind -d /dev/sda2 tpm2 '{"hash":"sha256","key":"rsa","pcr_bank":"sha256","pcr_ids":"0,1"}'
# clevis luks bind -d /dev/sda2 tpm2 '{"hash":"sha256","key":"rsa","pcr_bank":"sha256","pcr_ids":"0,1"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요PCR 해시 값이 밀봉 및 해시를 다시 작성할 때 사용되는 정책과 일치하는 경우에만 데이터가 음소거될 수 있으므로 PCR의 값이 변경될 때 암호화된 볼륨을 수동으로 잠금 해제할 수 있는 강력한 암호를 추가합니다.
shim-x64
패키지를 업그레이드한 후 시스템이 암호화된 볼륨을 자동으로 잠금 해제할 수 없는 경우 Red Hat Knowledgebase 솔루션 Clevis TPM2가 다시 시작한 후 LUKS 장치의 암호를 해독하지 않음을 참조하십시오.
- 이제 Clevis 정책과 함께 기존 암호를 사용하여 볼륨을 잠금 해제할 수 있습니다.
초기 부팅 시스템이 디스크 바인딩을 처리할 수 있도록 하려면 이미 설치된 시스템에서
dracut
툴을 사용합니다.yum install clevis-dracut dracut -fv --regenerate-all
# yum install clevis-dracut # dracut -fv --regenerate-all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
Clevis JWE 오브젝트가 LUKS 헤더에 성공적으로 배치되었는지 확인하려면
clevis luks list
명령을 사용합니다.clevis luks list -d /dev/sda2
# clevis luks list -d /dev/sda2 1: tpm2 '{"hash":"sha256","key":"rsa"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.14.9. LUKS 암호화된 볼륨에서 Clevis 핀 제거 수동으로 제거 링크 복사링크가 클립보드에 복사되었습니다!
clevis luks bind
명령으로 생성된 메타데이터를 수동으로 제거하고 Clevis에서 추가한 암호가 포함된 키 슬롯을 삭제하려면 다음 절차를 사용하십시오.
LUKS 암호화 볼륨에서 Clevis 핀을 제거하는 권장 방법은 clevis luks unbind
명령을 사용하는 것입니다. clevis luks unbind
를 사용하는 제거 절차는 하나의 단계로 구성되며 LUKS1 및 LUKS2 볼륨 모두에 대해 작동합니다. 다음 예제 명령은 바인딩 단계에서 생성한 메타데이터를 제거하고 /dev/sda2
장치의 키 슬롯 1
을 지웁니다.
clevis luks unbind -d /dev/sda2 -s 1
# clevis luks unbind -d /dev/sda2 -s 1
사전 요구 사항
- Clevis 바인딩이 있는 LUKS 암호화 볼륨.
프로세스
볼륨(예:
/dev/sda2
)이 암호화된 LUKS 버전을 확인하고 Clevis에 바인딩된 슬롯과 토큰을 식별합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 예에서 Clevis 토큰은
0
으로 식별되고 연결된 키 슬롯은1
입니다.LUKS2 암호화의 경우 토큰을 제거합니다.
cryptsetup token remove --token-id 0 /dev/sda2
# cryptsetup token remove --token-id 0 /dev/sda2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 장치가 LUKS1에 의해 암호화된 경우
Version으로 표시됩니다. 1
string in the output of thecryptsetup luksDump
명령 출력의 문자열luksmeta wipe
명령을 사용하여 다음 추가 단계를 수행합니다.luksmeta wipe -d /dev/sda2 -s 1
# luksmeta wipe -d /dev/sda2 -s 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Clevis 암호가 포함된 키 슬롯을 지웁니다.
cryptsetup luksKillSlot /dev/sda2 1
# cryptsetup luksKillSlot /dev/sda2 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.14.10. Kickstart를 사용하여 LUKS 암호화 볼륨 자동 등록 구성 링크 복사링크가 클립보드에 복사되었습니다!
이 절차의 단계에 따라 LUKS 암호화 볼륨 등록에 Clevis를 사용하는 자동화된 설치 프로세스를 구성합니다.
프로세스
Kickstart에 임시 암호로
/boot
이외의 모든 마운트 지점에 대해 LUKS 암호화가 활성화되도록 디스크를 파티션하도록 지시합니다. 암호는 이 등록 프로세스 단계에서 임시적입니다.part /boot --fstype="xfs" --ondisk=vda --size=256 part / --fstype="xfs" --ondisk=vda --grow --encrypted --passphrase=temppass
part /boot --fstype="xfs" --ondisk=vda --size=256 part / --fstype="xfs" --ondisk=vda --grow --encrypted --passphrase=temppass
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들어 OSPP 호환 시스템에는 더 복잡한 구성이 필요합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow %packages
섹션에 나열하여 관련 Clevis 패키지를 설치합니다.%packages clevis-dracut clevis-luks clevis-systemd %end
%packages clevis-dracut clevis-luks clevis-systemd %end
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 선택 사항: 필요한 경우 암호화된 볼륨을 수동으로 잠금 해제할 수 있도록 임시 암호를 제거하기 전에 강력한 암호를 추가합니다. 자세한 내용은 Red Hat Knowledgebase 솔루션에서 기존 LUKS 장치에 암호, 키 또는 키 파일을 추가하는 방법을 참조하십시오.
%post
섹션에서 바인딩을 수행하기 위해clevis luks bind
를 호출합니다. 임시 암호를 삭제합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성이 초기 부팅 중에 네트워크가 필요한 Tang 핀을 사용하거나 고정 IP 구성으로 NBDE 클라이언트를 사용하는 경우 LUKS 암호화 볼륨 수동 등록 구성에 설명된 대로
dracut
명령을 수정해야 합니다.RHEL 8.3에서
clevis luks bind
명령의-y
옵션을 사용할 수 있습니다. RHEL 8.2 이상에서는-y
를clevis luks bind
명령에서-f
로 바꾸고 Tang 서버에서 광고를 다운로드합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 주의cryptsetup luksRemoveKey
명령은 적용한 LUKS2 장치의 추가 관리를 방지합니다. LUKS1 장치에 대해서만dmsetup
명령을 사용하여 제거된 마스터 키를 복구할 수 있습니다.
Tang 서버 대신 TPM 2.0 정책을 사용할 때 유사한 절차를 사용할 수 있습니다.
18.14.11. LUKS 암호화 이동식 스토리지 장치의 자동 잠금 해제 구성 링크 복사링크가 클립보드에 복사되었습니다!
LUKS 암호화 USB 스토리지 장치의 자동 잠금 해제 프로세스를 설정할 수 있습니다.
프로세스
USB 드라이브와 같은 LUKS로 암호화된 이동식 스토리지 장치의 잠금을 자동으로 해제하려면
clevis-udisks2
패키지를 설치합니다.yum install clevis-udisks2
# yum install clevis-udisks2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시스템을 재부팅한 다음 LUKS 암호화 볼륨 수동 등록 구성에 설명된 대로
clevis luks bind
명령을 사용하여 바인딩 단계를 수행합니다. 예를 들면 다음과 같습니다.clevis luks bind -d /dev/sdb1 tang '{"url":"http://tang.srv"}'
# clevis luks bind -d /dev/sdb1 tang '{"url":"http://tang.srv"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이제 GNOME 데스크탑 세션에서 LUKS로 암호화된 이동식 장치의 잠금을 자동으로 해제할 수 있습니다. Clevis 정책에 바인딩된 장치는
clevis luks unlock
명령으로 잠금 해제할 수도 있습니다.clevis luks unlock -d /dev/sdb1
# clevis luks unlock -d /dev/sdb1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Tang 서버 대신 TPM 2.0 정책을 사용할 때 유사한 절차를 사용할 수 있습니다.
18.14.12. 고가용성 NBDE 시스템 배포 링크 복사링크가 클립보드에 복사되었습니다!
Tang은 고가용성 배포를 구축하기 위한 두 가지 방법을 제공합니다.
- 클라이언트 중복(권장)
-
클라이언트를 여러 Tang 서버에 바인딩할 수 있는 기능으로 구성해야 합니다. 이 설정에서 각 Tang 서버에는 자체 키가 있으며 클라이언트는 이러한 서버의 하위 집합에 연결하여 암호를 해독할 수 있습니다. Clevis는 이미
sss
플러그인을 통해 이 워크플로를 지원합니다. Red Hat은 고가용성 배포를 위해 이 방법을 권장합니다. - 키 공유
-
중복을 위해 두 개 이상의 Tang 인스턴스를 배포할 수 있습니다. 두 번째 또는 후속 인스턴스를 설정하려면
tang
패키지를 설치하고SSH
를 통해rsync
를 사용하여 키 디렉터리를 새 호스트에 복사합니다. 키를 공유하면 주요 손상의 위험이 증가하고 추가 자동화 인프라가 필요하므로 Red Hat은 이 방법을 권장하지 않습니다.
Shamir의 Secret Sharing을 사용한 고가용성 NBDE
Shamir's SSS(Secret Sharing)는 비밀을 몇 가지 고유한 부분으로 나누는 암호화 체계입니다. 비밀을 재구축하려면 다음과 같은 여러 부분이 필요합니다. 숫자는 임계값이라고 하며 SSS는 임계값 체계라고도 합니다.
Clevis는 SSS 구현을 제공합니다. 키를 만들어 여러 개의 조각으로 나눕니다. 각 조각은 SSS도 반복적으로 포함하여 다른 고정을 사용하여 암호화됩니다. 또한 t
임계값을 정의합니다. NBDE 배포에서 최소한 t
조각을 암호 해독하면 암호화 키를 복구하고 암호 해독 프로세스가 성공합니다. Clevis가 임계값에 지정된 것보다 적은 수의 부분을 감지하면 오류 메시지를 출력합니다.
예 1: 두 개의 Tang 서버로 구성된 중복
다음 명령은 두 개의 Tang 서버 중 하나 이상을 사용할 수 있는 경우 LUKS 암호화 장치를 암호 해독합니다.
clevis luks bind -d /dev/sda1 sss '{"t":1,"pins":{"tang":[{"url":"http://tang1.srv"},{"url":"http://tang2.srv"}]}}'
# clevis luks bind -d /dev/sda1 sss '{"t":1,"pins":{"tang":[{"url":"http://tang1.srv"},{"url":"http://tang2.srv"}]}}'
이전 명령은 다음 구성 체계를 사용했습니다.
이 구성에서 SSS 임계값 t
가 1
로 설정되고 clevis luks bind
명령이 나열된 두 개의 tang
서버에서 하나 이상 사용할 수 있는 경우 시크릿을 성공적으로 재구축합니다.
예 2: Tang 서버 및 TPM 장치의 공유 비밀
다음 명령은 tang
서버와 tpm2
장치를 모두 사용할 수 있는 경우 LUKS 암호화 장치를 성공적으로 암호 해독합니다.
clevis luks bind -d /dev/sda1 sss '{"t":2,"pins":{"tang":[{"url":"http://tang1.srv"}], "tpm2": {"pcr_ids":"0,7"}}}'
# clevis luks bind -d /dev/sda1 sss '{"t":2,"pins":{"tang":[{"url":"http://tang1.srv"}], "tpm2": {"pcr_ids":"0,7"}}}'
SSS 임계값 't'가 '2'로 설정된 구성 스키마가 이제 다음과 같습니다.
18.14.13. NBDE 네트워크에서 가상 머신 배포 링크 복사링크가 클립보드에 복사되었습니다!
clevis luks bind
명령은 LUKS 마스터 키를 변경하지 않습니다. 즉, 가상 머신 또는 클라우드 환경에서 사용하기 위해 LUKS로 암호화된 이미지를 생성하면 이 이미지를 실행하는 모든 인스턴스가 마스터 키를 공유합니다. 이는 매우 안전하지 않으며 항상 피해야 합니다.
이는 Clevis의 제한 사항이 아니라 LUKS의 설계 원칙입니다. 시나리오에서 클라우드에서 암호화된 루트 볼륨을 필요로 하는 경우 클라우드에서 Red Hat Enterprise Linux의 각 인스턴스에 대해 설치 프로세스(일반적으로 Kickstart 사용)를 수행합니다. LUKS 마스터 키를 공유하지 않고는 이미지를 공유할 수 없습니다.
가상화 환경에서의 자동 잠금 해제를 배포하려면 lorax
또는 virt-install
과 같은 시스템을 Kickstart 파일과 함께 사용하십시오( Kickstart를 사용하여 LUKS 암호화 볼륨 자동 등록 구성 참조) 또는 다른 자동화된 프로비저닝 툴을 사용하여각 암호화된 VM에 고유한 마스터 키가 있는지 확인합니다.
18.14.14. NBDE를 사용하여 클라우드 환경에 대해 자동으로 등록할 수 있는 VM 이미지 빌드 링크 복사링크가 클립보드에 복사되었습니다!
클라우드 환경에 자동으로 등록 가능한 암호화된 이미지를 배포하면 고유한 도전 과제를 제공할 수 있습니다. 다른 가상화 환경과 마찬가지로 LUKS 마스터 키 공유를 피하려면 단일 이미지에서 시작된 인스턴스 수를 줄이는 것이 좋습니다.
따라서 공용 리포지토리에서 공유되지 않고 제한된 인스턴스 배포를 위한 기반을 제공하는 사용자 지정 이미지를 생성하는 것이 좋습니다. 생성할 인스턴스 수는 배포의 보안 정책에 따라 정의하고 LUKS 마스터 키 공격 벡터와 관련된 위험 허용 오차를 기반으로 정의해야 합니다.
LUKS 지원 자동 배포를 빌드하려면 이미지 빌드 프로세스 중에 마스터 키 고유성을 보장하기 위해 Kickstart 파일과 함께 Lorax 또는 virt-install과 같은 시스템을 사용해야 합니다.
클라우드 환경에서는 여기에서 고려할 두 개의 Tang 서버 배포 옵션을 사용할 수 있습니다. 먼저, Tang 서버는 클라우드 환경 자체 내에 배포할 수 있습니다. 둘째, Tang 서버는 두 인프라 간에 VPN 링크를 사용하여 독립적인 인프라에 클라우드 외부에 배포할 수 있습니다.
기본적으로 클라우드에 Tang을 배포하면 쉽게 배포할 수 있습니다. 그러나 인프라를 다른 시스템의 암호화 텍스트의 데이터 지속성 계층과 공유하는 경우 Tang 서버의 개인 키와 Clevis 메타데이터가 동일한 물리적 디스크에 저장할 수 있습니다. 이 물리적 디스크에 액세스하면 암호 텍스트 데이터가 완전히 손상될 수 있습니다.
항상 데이터가 저장된 위치와 Tang이 실행 중인 시스템을 물리적으로 분리합니다. 클라우드와 Tang 서버 간의 이 분리는 Tang 서버의 개인 키를 실수로 Clevis 메타데이터와 결합할 수 없도록 합니다. 클라우드 인프라가 위험할 경우 Tang 서버의 로컬 제어도 제공합니다.
18.14.15. Tang을 컨테이너로 배포 링크 복사링크가 클립보드에 복사되었습니다!
tang
컨테이너 이미지는 OpenShift Container Platform (OCP) 클러스터 또는 별도의 가상 시스템에서 실행되는 Clevis 클라이언트에 대해 Tang-server 암호 해독 기능을 제공합니다.
사전 요구 사항
-
podman
패키지 및 해당 종속성은 시스템에 설치됩니다. -
podman login
컨테이너 카탈로그에 로그인했습니다. 자세한 내용은 Red Hat Container Registry Authentication 을 참조하십시오.registry.redhat.io
명령을 사용하여 registry.redhat.io - Clevis 클라이언트는 Tang 서버를 사용하여 자동으로 잠금 해제하려는 LUKS 암호화된 볼륨이 포함된 시스템에 설치됩니다.
절차
registry.redhat.io
레지스트리에서tang
컨테이너 이미지를 가져옵니다.podman pull registry.redhat.io/rhel8/tang
# podman pull registry.redhat.io/rhel8/tang
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너를 실행하고 포트를 지정하고 Tang 키의 경로를 지정합니다. 이전 예제에서는
tang
컨테이너를 실행하고 포트 7500 을 지정하고/var/db/tang
디렉터리의 Tang 키의 경로를 나타냅니다.podman run -d -p 7500:7500 -v tang-keys:/var/db/tang --name tang registry.redhat.io/rhel8/tang
# podman run -d -p 7500:7500 -v tang-keys:/var/db/tang --name tang registry.redhat.io/rhel8/tang
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Tang은 기본적으로 포트 80을 사용하지만 Apache HTTP 서버와 같은 다른 서비스와 충돌할 수 있습니다.
선택 사항: 보안 강화를 위해 Tang 키를 주기적으로 순환합니다. 다음과 같이
tangd-rotate-keys
스크립트를 사용할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
Tang 서버에 의해 자동으로 잠금 해제하기 위해 LUKS 암호화 볼륨이 포함된 시스템에서 Clevis 클라이언트가 Tang을 사용하여 일반 텍스트 메시지를 암호화하고 암호를 해독할 수 있는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 예제 명령은 Tang 서버를 localhost URL에서 사용할 수 있고 포트 7500 을 통해 통신할 때 출력 끝에
테스트
문자열을 표시합니다.
18.14.16. RHEL 시스템 역할을 사용하여 NBDE 구성 링크 복사링크가 클립보드에 복사되었습니다!
Clevis 및 Tang을 사용하여 PBD(Policy-Based Decryption) 솔루션의 자동 배포를 위해 nbde_client
및 nbde_server
RHEL 시스템 역할을 사용할 수 있습니다. rhel-system-roles
패키지에는 이러한 시스템 역할, 관련 예제 및 참조 문서가 포함되어 있습니다.
18.14.16.1. nbde_server RHEL 시스템 역할을 사용하여 여러 Tang 서버를 설정 링크 복사링크가 클립보드에 복사되었습니다!
nbde_server
시스템 역할을 사용하면 Tang 서버를 자동화된 디스크 암호화 솔루션의 일부로 배포하고 관리할 수 있습니다. 이 역할은 다음 기능을 지원합니다.
- Tang 키 순환
- Tang 키 배포 및 백업
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예제 플레이북은 Tang 서버와 키 교체의 배포를 확인합니다.
예제 플레이북에 지정된 설정은 다음과 같습니다.
nbde_server_manage_firewall: true
-
방화벽
시스템 역할을 사용하여nbde_server
역할에서 사용하는 포트를 관리합니다. nbde_server_manage_selinux: true
selinux
시스템 역할을 사용하여nbde_server
역할에서 사용하는 포트를 관리합니다.플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.nbde_server/README.md
파일을 참조하십시오.
플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
NBDE 클라이언트에서 다음 명령을 사용하여 Tang 서버가 올바르게 작동하는지 확인합니다. 명령은 암호화 및 암호 해독을 위해 전달하는 동일한 메시지를 반환해야 합니다.
ansible managed-node-01.example.com -m command -a 'echo test | clevis encrypt tang '{"url":"<tang.server.example.com>"}' -y | clevis decrypt'
# ansible managed-node-01.example.com -m command -a 'echo test | clevis encrypt tang '{"url":"<tang.server.example.com>"}' -y | clevis decrypt' test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.14.16.2. nbde_client RHEL 시스템 역할을 사용하여 DHCP로 Clevis 클라이언트 설정 링크 복사링크가 클립보드에 복사되었습니다!
nbde_client
시스템 역할을 사용하면 자동화된 방식으로 여러 Clevis 클라이언트를 배포할 수 있습니다.
이 역할은 LUKS 암호화 볼륨을 하나 이상의 NBDE(Network-Bound) 서버 - Tang 서버에 바인딩할 수 있도록 지원합니다. 기존 볼륨 암호화를 암호로 보존하거나 제거할 수 있습니다. 암호를 제거한 후 NBDE만 사용하여 볼륨을 잠금 해제할 수 있습니다. 이 기능은 시스템을 프로비저닝한 후 제거해야 하는 임시 키 또는 암호를 사용하여 볼륨을 처음 암호화할 때 유용합니다.
암호와 키 파일을 둘 다 제공하면 이 역할은 먼저 제공한 정보를 사용합니다. 유효한 이러한 항목을 찾지 못하면 기존 바인딩에서 암호를 검색하려고 합니다.
정책 기반 암호 해독(Policy-Based Decryption)은 장치를 슬롯에 매핑하는 것으로 바인딩을 정의합니다. 즉, 동일한 장치에 대해 여러 바인딩을 가질 수 있습니다. 기본 슬롯은 슬롯 1입니다.
nbde_client
시스템 역할은 Tang 바인딩만 지원합니다. 따라서 TPM2 바인딩에는 사용할 수 없습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. - LUKS를 사용하여 이미 암호화된 볼륨입니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예제 플레이북은 두 개 이상의 Tang 서버 중 하나를 사용할 수 있을 때 두 개의 LUKS 암호화 볼륨의 잠금 해제를 자동화하도록 Clevis 클라이언트를 구성합니다.
예제 플레이북에 지정된 설정은 다음과 같습니다.
state: present
-
state
값은 플레이북을 실행한 후 구성을 나타냅니다. 새 바인딩을 생성하거나 기존 바인딩을 업데이트하려면present
값을 사용합니다.clevis luks bind
명령과 반대로state: present
를 사용하여 장치 슬롯의 기존 바인딩을 덮어쓸 수도 있습니다.absent
값은 지정된 바인딩을 제거합니다. nbde_client_early_boot: true
nbde_client
역할은 기본적으로 초기 부팅 중에 Tang 핀의 네트워킹을 사용할 수 있도록 합니다. 이 기능을 비활성화해야 하는 경우nbde_client_early_boot: false
변수를 플레이북에 추가합니다.플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.nbde_client/README.md
파일을 참조하십시오.
플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
NBDE 클라이언트에서 Tang 서버에서 자동으로 잠금 해제해야 하는 암호화된 볼륨에 LUKS 핀에 해당 정보가 포함되어 있는지 확인합니다.
ansible managed-node-01.example.com -m command -a 'clevis luks list -d /dev/rhel/root'
# ansible managed-node-01.example.com -m command -a 'clevis luks list -d /dev/rhel/root' 1: tang '{"url":"<http://server1.example.com/>"}' 2: tang '{"url":"<http://server2.example.com/>"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nbde_client_early_boot: false
변수를 사용하지 않는 경우 초기 부팅에 바인딩을 사용할 수 있는지 확인합니다. 예를 들면 다음과 같습니다.ansible managed-node-01.example.com -m command -a 'lsinitrd | grep clevis-luks'
# ansible managed-node-01.example.com -m command -a '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 …
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.14.16.3. nbde_client RHEL 시스템 역할을 사용하여 static-IP Clevis 클라이언트 설정 링크 복사링크가 클립보드에 복사되었습니다!
nbde_client
RHEL 시스템 역할은 DHCP(Dynamic Host Configuration Protocol)가 있는 시나리오만 지원합니다. 고정 IP 구성이 있는 NBDE 클라이언트에서 네트워크 구성을 커널 부팅 매개변수로 전달해야 합니다.
일반적으로 관리자는 플레이북을 재사용하고 초기 부팅 중에 Ansible이 고정 IP 주소를 할당하는 각 호스트에 대해 개별 플레이북을 유지 관리하지 않습니다. 이 경우 플레이북에서 변수를 사용하고 외부 파일에 설정을 제공할 수 있습니다. 따라서 설정이 있는 하나의 플레이북과 하나의 파일만 필요합니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. - LUKS를 사용하여 이미 암호화된 볼륨입니다.
절차
호스트의 네트워크 설정으로 파일을 생성하고(예:
static-ip-settings-clients.yml
) 호스트에 동적으로 할당할 값을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 플레이북은
~/static-ip-settings-clients.yml
파일에 나열된 각 호스트에 대해 동적으로 특정 값을 읽습니다.플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.network/README.md
파일을 참조하십시오.플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow