7.11. 측정된 부팅 테스트를 위해 Keylime 구성
측정된 부팅 테스트용으로 Keylime을 구성할 때 Keylime은 측정된 시스템의 부팅 프로세스가 정의한 상태에 해당하는지 확인합니다.
사전 요구 사항
Keylime 구성 요소가 구성된 시스템에 대한 네트워크 액세스 권한이 있어야 합니다.
- Verifier
- 자세한 내용은 7.2절. “패키지에서 Keylime verifier 배포”의 내용을 참조하십시오.
- Registrar
- 자세한 내용은 7.4절. “패키지에서 Keylime 등록 기관 배포”의 내용을 참조하십시오.
- 테넌트
- 자세한 내용은 7.8절. “패키지에서 Keylime 테넌트 배포”의 내용을 참조하십시오.
- agent
- 자세한 내용은 7.9절. “패키지에서 Keylime 에이전트 배포”의 내용을 참조하십시오.
- 에이전트 시스템에서 UEFI(Unified Extensible Firmware Interface)가 활성화됩니다.
절차
Keylime 에이전트가 구성되어 실행되는 모니터링 시스템에서
create_mb_refstate스크립트가 포함된python3-keylime패키지를 설치합니다.dnf -y install python3-keylime
# dnf -y install python3-keylimeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 모니터링된 시스템에서
create_mb_refstate스크립트를 사용하여 시스템의 현재 상태의 측정된 부팅 로그에서 정책을 생성합니다./usr/share/keylime/scripts/create_mb_refstate /sys/kernel/security/tpm0/binary_bios_measurements <./measured_boot_reference_state.json>
# /usr/share/keylime/scripts/create_mb_refstate /sys/kernel/security/tpm0/binary_bios_measurements <./measured_boot_reference_state.json>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
스크립트에서 생성된 정책을 저장하는 경로로 <
./measured_boot_reference_state.json>을 바꿉니다. UEFI 시스템에 Secure Boot가 활성화되어 있지 않은 경우
--without-secureboot인수를 전달합니다.중요create_mb_refstate스크립트를 사용하여 생성된 정책은 시스템의 현재 상태를 기반으로하며 매우 엄격하게 사용됩니다. 커널 업데이트 및 시스템 업데이트를 포함한 시스템을 변경하면 부팅 프로세스가 변경되고 시스템이 테스트되지 않습니다.
-
스크립트에서 생성된 정책을 저장하는 경로로 <
생성된 정책을
keylime_tenant유틸리티가 구성된 시스템에 복사합니다. 예를 들면 다음과 같습니다.scp root@<agent_ip>:<./measured_boot_reference_state.json> <./measured_boot_reference_state.json>
# scp root@<agent_ip>:<./measured_boot_reference_state.json> <./measured_boot_reference_state.json>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Keylime 테넌트가 구성된 시스템에서
keylime_tenant유틸리티를 사용하여 에이전트를 프로비저닝합니다.keylime_tenant -c add -t <agent_ip> -u <agent_uuid> --mb_refstate <./measured_boot_reference_state.json> --cert default
# keylime_tenant -c add -t <agent_ip> -u <agent_uuid> --mb_refstate <./measured_boot_reference_state.json> --cert defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
&
lt;agent_ip>를 에이전트의 IP 주소로 바꿉니다. -
&
lt;agent_uuid>를 에이전트의 UUID로 바꿉니다. -
&
lt;./measured_boot_reference_state.json>을 측정된 부팅 정책의 경로로 바꿉니다.
런타임 모니터링과 함께 측정된 부팅을 구성하는 경우
keylime_tenant -c add명령을 입력할 때 두 사용 사례 모두에서 모든 옵션을 제공합니다.참고# keylime_tenant -c delete -t <agent_ ip> -u < agent_uuid> 명령을 사용하여 노드 모니터링에서 Keylime을 중지할 수 있습니다.keylime_tenant -c update명령을 사용하여 이미 등록된 에이전트의 구성을 수정할 수 있습니다.-
&
검증
모니터링된 시스템을 재부팅하고 에이전트가 성공적으로 테스트되었는지 확인합니다.
keylime_tenant -c cvstatus -u <agent_uuid> ... {"<agent.uuid>": {"operational_state": "Get Quote"..."attestation_count": 5 ...# keylime_tenant -c cvstatus -u <agent_uuid> ... {"<agent.uuid>": {"operational_state": "Get Quote"..."attestation_count": 5 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow &
lt;agent_uuid>를 에이전트의 UUID로 바꿉니다.operational_state값이Get Quote이고attestation_count가 0이 아닌 경우 이 에이전트의 인증이 성공적으로 수행됩니다.operational_state값이Invalid Quote또는Failedattestation에 실패하면 명령과 유사한 출력이 표시됩니다.{"<agent.uuid>": {"operational_state": "Invalid Quote", ... "ima.validation.ima-ng.not_in_allowlist", "attestation_count": 5, "last_received_quote": 1684150329, "last_successful_attestation": 1684150327}}{"<agent.uuid>": {"operational_state": "Invalid Quote", ... "ima.validation.ima-ng.not_in_allowlist", "attestation_count": 5, "last_received_quote": 1684150329, "last_successful_attestation": 1684150327}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 테스트에 실패하면 검증기 로그에 세부 정보를 표시합니다.
journalctl -u keylime_verifier {"d432fbb3-d2f1-4a97-9ef7-75bd81c00000": {"operational_state": "Tenant Quote Failed", ... "last_event_id": "measured_boot.invalid_pcr_0", "attestation_count": 0, "last_received_quote": 1684487093, "last_successful_attestation": 0}}# journalctl -u keylime_verifier {"d432fbb3-d2f1-4a97-9ef7-75bd81c00000": {"operational_state": "Tenant Quote Failed", ... "last_event_id": "measured_boot.invalid_pcr_0", "attestation_count": 0, "last_received_quote": 1684487093, "last_successful_attestation": 0}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow