7.9. 패키지에서 Keylime 에이전트 배포
Keylime 에이전트는 Keylime에서 모니터링할 모든 시스템에 배포된 구성 요소입니다.
기본적으로 Keylime 에이전트는 모니터링된 시스템의 /var/lib/keylime/
디렉터리에 모든 데이터를 저장합니다.
구성 파일을 드롭인 디렉터리 내에 구성하려면 두 자리 숫자 접두사가 있는 파일 이름을 사용합니다(예: /etc/keylime/agent.conf.d/00-registrar-ip.conf
). 구성 처리는 드롭인 디렉터리 내의 파일을 사전순으로 읽고 각 옵션을 읽은 마지막 값으로 설정합니다.
사전 요구 사항
-
모니터링되는 시스템에 대한
root
권한이 있습니다. -
모니터링된 시스템에는 신뢰할 수 있는 플랫폼 모듈(TPM)이 있습니다. 확인하려면
tpm2_pcrread
명령을 입력합니다. 출력에 여러 해시가 반환되면 TPM을 사용할 수 있습니다. 다른 Keylime 구성 요소가 구성된 시스템에 대한 네트워크 액세스 권한이 있습니다.
- Verifier
- 자세한 내용은 Keylime verifier 구성을 참조하십시오.
- Registrar
- 자세한 내용은 Keylime 등록 기관 구성을 참조하십시오.
- 테넌트
- 자세한 내용은 Keylime 테넌트 구성을 참조하십시오.
- 모니터링되는 시스템에서 무결성 측정 아키텍처(IMA)가 활성화됩니다. 자세한 내용은 무결성 측정 아키텍처 활성화 및 확장 검증 모듈을 참조하십시오.
절차
Keylime 에이전트를 설치합니다.
# dnf install keylime-agent
이 명령은
keylime-agent-rust
패키지를 설치합니다.구성 파일에 에이전트의 IP 주소와 포트를 정의합니다.
/etc/keylime/agent
디렉터리에 새 .conf 파일을 만듭니다(예:.conf
.d//etc/keylime/agent.conf.conf.d/00-agent-ip.conf
).[agent] ip = '<agent_ip>'
참고Keylime 에이전트 구성은 다른 구성 요소의 구성에 사용되는 INI 형식과 다른 TOML 형식을 사용합니다. 따라서 유효한 TOML 구문에 값을 입력합니다(예: 단일 따옴표로 경로 및 여러 경로의 배열은 대괄호로 묶습니다.
-
&
lt;agent_IP_address&
gt;를 에이전트의 IP 주소로 바꿉니다. 또는ip = '*'
또는ip = '0.0.0.0'
을 사용하여 사용 가능한 모든 IP 주소에 에이전트를 바인딩합니다. -
선택적으로 port
= ' <agent_port> ' 옵션을 사용하여 기본 값
를 변경할 수도 있습니다.9002
에서 에이전트의 포트
-
&
구성 파일에 등록 기관의 IP 주소와 포트를 정의합니다.
/etc/keylime/agent
디렉터리에 새 .conf 파일을 만듭니다(예:.conf
.d//etc/keylime/agent.conf.d/00-registrar-ip.conf
).[agent] registrar_ip = '<registrar_IP_address>'
-
&
lt;registrar_IP_address>
;를 등록 기관의 IP 주소로 바꿉니다. -
선택적으로 registrar_port
= ' <registrar_port>' 옵션을 사용하여 기본 값
를 변경할 수도 있습니다.8890
에서 등록 기관 포트
-
&
선택 사항: 에이전트의 UUID(Universally unique identifier)를 정의합니다. 정의되지 않은 경우 기본 UUID가 사용됩니다.
/etc/keylime/agent
디렉터리에 새 .conf 파일을 만듭니다(예:.conf
.d//etc/keylime/agent.conf.conf.d/00-agent-uuid.conf
).[agent] uuid = '<agent_UUID>'
-
<
agent_UUID
>를 에이전트의 UUID(예:d432fbb3-d2f1-4a97-9ef7-abcdef012345
)로 바꿉니다.uuidgen
유틸리티를 사용하여 UUID를 생성할 수 있습니다.
-
<
선택 사항: 에이전트의 기존 키 및 인증서를 로드합니다. 에이전트에서 no
server_key
및server_cert
를 수신하면 자체 키와 자체 서명된 인증서를 생성합니다.구성에서 키와 인증서의 위치를 정의합니다.
/etc/keylime/agent
디렉터리에 새 .conf 파일을 만듭니다(예:.conf
.d//etc/keylime/agent.conf.d/00-keys-and-certs.conf
).[agent] server_key = '</path/to/server_key>' server_key_password = '<passphrase1>' server_cert = '</path/to/server_cert>' trusted_client_ca = '[</path/to/ca/cert3>, </path/to/ca/cert4>]'
참고절대 경로를 사용하여 키 및 인증서 위치를 정의합니다. Keylime 에이전트는 상대 경로를 허용하지 않습니다.
방화벽에서 포트를 엽니다.
# firewall-cmd --add-port 9002/tcp # firewall-cmd --runtime-to-permanent
다른 포트를 사용하는 경우
9002
를.conf
파일에 정의된 포트 번호로 바꿉니다.keylime_agent
서비스를 활성화하고 시작합니다.# systemctl enable --now keylime_agent
선택 사항: Keylime 테넌트가 구성된 시스템에서 에이전트가 올바르게 구성되어 등록 기관에 연결할 수 있는지 확인합니다.
# keylime_tenant -c regstatus --uuid <agent_uuid> Reading configuration from ['/etc/keylime/logging.conf'] ... ==\n-----END CERTIFICATE-----\n", "ip": "127.0.0.1", "port": 9002, "regcount": 1, "operational_state": "Registered"}}}
&
lt;agent_uuid&
gt;를 에이전트의 UUID로 바꿉니다.등록 기관 및 에이전트가 올바르게 구성된 경우 출력에 에이전트의 IP 주소와 포트가 표시되고 그 뒤에
"operational_state"가 표시됩니다. "Registered"
.
/etc/ima/ima-policy
파일에 다음 내용을 입력하여 새 IMA 정책을 생성합니다.# PROC_SUPER_MAGIC = 0x9fa0 dont_measure fsmagic=0x9fa0 # SYSFS_MAGIC = 0x62656572 dont_measure fsmagic=0x62656572 # DEBUGFS_MAGIC = 0x64626720 dont_measure fsmagic=0x64626720 # TMPFS_MAGIC = 0x01021994 dont_measure fsmagic=0x1021994 # RAMFS_MAGIC dont_measure fsmagic=0x858458f6 # DEVPTS_SUPER_MAGIC=0x1cd1 dont_measure fsmagic=0x1cd1 # BINFMTFS_MAGIC=0x42494e4d dont_measure fsmagic=0x42494e4d # SECURITYFS_MAGIC=0x73636673 dont_measure fsmagic=0x73636673 # SELINUX_MAGIC=0xf97cff8c dont_measure fsmagic=0xf97cff8c # SMACK_MAGIC=0x43415d53 dont_measure fsmagic=0x43415d53 # NSFS_MAGIC=0x6e736673 dont_measure fsmagic=0x6e736673 # EFIVARFS_MAGIC dont_measure fsmagic=0xde5e81e4 # CGROUP_SUPER_MAGIC=0x27e0eb dont_measure fsmagic=0x27e0eb # CGROUP2_SUPER_MAGIC=0x63677270 dont_measure fsmagic=0x63677270 # OVERLAYFS_MAGIC # when containers are used we almost always want to ignore them dont_measure fsmagic=0x794c7630 # MEASUREMENTS measure func=BPRM_CHECK measure func=FILE_MMAP mask=MAY_EXEC measure func=MODULE_CHECK uid=0
이 정책은 실행된 애플리케이션의 런타임 모니터링을 대상으로 합니다. 시나리오에 따라 이 정책을 조정할 수 있습니다. MAGIC 상수는 시스템의
statfs(2)
매뉴얼 페이지에서 찾을 수 있습니다.커널 매개변수를 업데이트합니다.
# grubby --update-kernel DEFAULT --args 'ima_appraise=fix ima_canonical_fmt ima_policy=tcb ima_template=ima-ng'
- 시스템을 재부팅하여 새 IMA 정책을 적용합니다.
검증
에이전트가 실행 중인지 확인합니다.
# systemctl status keylime_agent ● keylime_agent.service - The Keylime compute agent Loaded: loaded (/usr/lib/systemd/system/keylime_agent.service; enabled; preset: disabled) Active: active (running) since ...
다음 단계
모니터링하려는 모든 시스템에 에이전트를 구성한 후 Keylime을 배포하여 다음 함수 중 하나 또는 둘 다를 수행할 수 있습니다.