7.9. 从软件包部署 Keylime 代理
Keylime 代理是部署到被 Keylime 监控的所有系统的组件。
默认情况下,Keylime 代理将其所有数据保存在被监控系统的 /var/lib/keylime/
目录中。
要将配置文件保留在置入目录中,请使用具有两位数字前缀的文件名,例如 /etc/keylime/agent.conf.d/00-registrar-ip.conf
。配置处理以字典顺序读取置入目录中的文件,并对每个选项设置为它读取的最后一个值。
前提条件
-
您有对被监控系统的
root
权限。 -
监控的系统有一个受信任的平台模块(TPM)。要验证,请输入
tpm2_pcrread
命令。如果输出返回多个哈希,则代表 TPM 可用。 您对配置了其他 Keylime 组件的系统有网络访问权限:
- 验证器
- 如需更多信息,请参阅 配置 Keylime 验证器。
- 注册器
- 如需更多信息,请参阅 配置 Keylime 注册器。
- 租户
- 如需更多信息,请参阅 配置 Keylime 租户。
- 在监控的系统上启用了完整性测量架构(IMA)。如需更多信息,请参阅 启用完整性测量架构和扩展验证模块。
流程
安装 Keylime 代理:
# dnf install keylime-agent
这个命令会安装
keylime-agent-rust
软件包。在配置文件中定义代理的 IP 地址和端口。在
/etc/keylime/agent.conf.d/
目录中创建一个新的.conf
文件,例如:/etc/keylime/agent.conf.d/00-agent-ip.conf
,其内容如下:[agent] ip = '<agent_ip>'
注意Keylime 代理配置使用 TOML 格式,它与用于其他组件配置的 INI 格式不同。因此,使用有效 TOML 语法输入值,例如,在带单引号的路径以及带方括号的多个路径的数组。
-
将
<agent_IP_address>
替换为代理的 IP 地址。或者,使用ip = '*'
或ip = '0.0.0.0'
将代理绑定到所有可用 IP 地址。 -
另外,您还可以使用
port = '<agent_port>'
选项更改代理端口的默认值9002
。
-
将
在配置文件中定义注册的 IP 地址和端口。在
/etc/keylime/agent.conf.d/
目录中创建一个新的.conf
文件,例如:/etc/keylime/agent.conf.d/00-registrar-ip.conf
,其内容如下:[agent] registrar_ip = '<registrar_IP_address>'
-
将
<registrar_IP_address>
替换为注册中心的 IP 地址。 -
另外,您还可以使用
registrar_port = '<registrar_port>'
选项更改注册器端口的默认值8890
。
-
将
可选:定义代理的通用唯一标识符(UUID)。如果没有定义,则使用默认 UUID。在
/etc/keylime/agent.conf.d/
目录中创建一个新的.conf
文件,例如:/etc/keylime/agent.conf.d/00-agent-uuid.conf
,其内容如下:[agent] uuid = '<agent_UUID>'
-
将
<agent_UUID>
替换为代理的 UUID,如d432fbb3-d2f1-4a97-9ef7-abcdef012345
。您可以使用uuidgen
工具生成 UUID。
-
将
可选:加载代理的现有密钥和证书。如果代理没有接收
server_key
和server_cert
,它会生成自己的密钥和自签名证书。在配置中定义密钥和证书的位置。在
/etc/keylime/agent.conf.d/
目录中创建一个新的.conf
文件,例如:/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"}}}
将
<agent_uuid>
替换为代理的 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
此策略针对已执行的应用程序的运行时监控。您可以根据您的场景调整此策略。您可以在
statfs (2)
man page 中找到 MAGIC 常量。更新内核参数:
# 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 来执行以下一个或多个功能:
其他资源