7.2. 패키지에서 Keylime verifier 배포
검증자는 Keylime에서 가장 중요한 구성 요소입니다. 시스템 무결성의 초기 및 주기적 검사를 수행하고 에이전트를 통해 암호화 키 부트스트랩을 지원합니다. 검증자는 제어 인터페이스에 상호 TLS 암호화를 사용합니다.
신뢰 체인을 유지하려면 검증기를 실행하는 시스템을 안전하고 제어할 수 있도록 유지합니다.
검증자는 요구 사항에 따라 별도의 시스템 또는 Keylime 등록 기관과 동일한 시스템에 설치할 수 있습니다. 별도의 시스템에서 검증기 및 등록 기관을 실행하면 성능이 향상됩니다.
구성 파일을 드롭인 디렉터리 내에서 유지하려면 두 자리 숫자 접두사(예: /etc/keylime/verifier.conf.d/00-verifier-ip.conf
)와 함께 파일 이름을 사용합니다. 구성 처리는 드롭인 디렉터리 내의 파일을 사전순으로 읽고 각 옵션을 읽은 마지막 값으로 설정합니다.
사전 요구 사항
-
Keylime 구성 요소를 설치하려는 시스템 또는 시스템에 대한
루트
권한 및 네트워크 연결이 있습니다. - 인증 기관의 유효한 키와 인증서가 있습니다.
선택 사항: Keylime이 검증기의 데이터를 저장하는 데이터베이스에 액세스할 수 있습니다. 다음 데이터베이스 관리 시스템을 사용할 수 있습니다.
- SQLite(기본값)
- PostgreSQL
- MySQL
- MariaDB
절차
Keylime 검증기를 설치합니다.
# dnf install keylime-verifier
/etc/keylime/verifier
디렉터리에 새 .conf 파일을 생성하여 검증기의 IP 주소 및 포트를 정의합니다(예:.conf
.d//etc/keylime/verifier.conf.d/00-verifier-ip.conf
).[verifier] ip = <verifier_IP_address>
-
&
lt;verifier_IP_address&
gt;를 검증자의 IP 주소로 바꿉니다. 또는ip = *
또는ip = 0.0.0.0
을 사용하여 확인자를 사용 가능한 모든 IP 주소에 바인딩합니다. -
선택적으로
port
옵션을 사용하여 verifier의 포트를 기본값8881
에서 변경할 수도 있습니다.
-
&
선택 사항: 에이전트 목록에 대해 검증자 데이터베이스를 구성합니다. 기본 구성은 검증자의
/var/lib/keylime/cv_data.sqlite/
디렉터리의 SQLite 데이터베이스를 사용합니다. /etc/keylime/verifier.conf
.d/ 디렉터리에 새 .conf 파일을 생성하여 다른 데이터베이스를 정의할 수 있습니다(예:/etc/keylime/verifier.conf.d/
00-db-url.conf[verifier] database_url = <protocol>://<name>:<password>@<ip_address_or_hostname>/<properties>
<
protocol>://<name>:<password>@<ip_address_or_hostname>/<properties
>를 데이터베이스의 URL로 바꿉니다(예:postgresql://verifier:UQ?nRNY9g7GZzN7@198.51.100.1/verifierdb
).사용하는 인증 정보가 Keylime에 대한 권한을 제공하여 데이터베이스 구조를 만들어야 합니다.
검증에 인증서와 키를 추가합니다. Keylime에서 해당 키를 생성하거나 기존 키 및 인증서를 사용하도록 할 수 있습니다.
-
기본
tls_dir = generate
옵션을 사용하면 Keylime에서 검증자, 등록 기관 및 테넌트에 대한 새 인증서를/var/lib/keylime/cv_ca/
디렉터리에 생성합니다. 구성에서 기존 키와 인증서를 로드하려면 확인자 구성에서 해당 위치를 정의합니다. 인증서는
keylime
사용자가 Keylime 서비스가 실행 중인 액세스할 수 있어야 합니다./etc/keylime/verifier
.conf
.d/ 디렉터리에 새 .conf 파일을 만듭니다(예:/etc/keylime/verifier.conf.d/
00-keys-and-certs.conf[verifier] tls_dir = /var/lib/keylime/cv_ca server_key = </path/to/server_key> server_key_password = <passphrase1> server_cert = </path/to/server_cert> trusted_client_ca = ['</path/to/ca/cert1>', '</path/to/ca/cert2>'] client_key = </path/to/client_key> client_key_password = <passphrase2> client_cert = </path/to/client_cert> trusted_server_ca = ['</path/to/ca/cert3>', '</path/to/ca/cert4>']
참고절대 경로를 사용하여 키 및 인증서 위치를 정의합니다. 또는
tls_dir
옵션에 정의된 디렉터리에서 상대 경로가 확인됩니다.
-
기본
방화벽에서 포트를 엽니다.
# firewall-cmd --add-port 8881/tcp # firewall-cmd --runtime-to-permanent
다른 포트를 사용하는 경우
8881
을.conf
파일에 정의된 포트 번호로 바꿉니다.검증 서비스를 시작합니다.
# systemctl enable --now keylime_verifier
참고기본 구성에서 확인자가 다른 Keylime 구성 요소에 대한 CA 및 인증서를 생성하므로
keylime_registrar
서비스를 시작하기 전에keylime_verifier
를 시작합니다. 사용자 정의 인증서를 사용할 때는 이 순서가 필요하지 않습니다.
검증
keylime_verifier
서비스가 활성화되어 실행 중인지 확인합니다.# systemctl status keylime_verifier ● keylime_verifier.service - The Keylime verifier Loaded: loaded (/usr/lib/systemd/system/keylime_verifier.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2022-11-09 10:10:08 EST; 1min 45s ago