8.6. 使用完整性测量架构收集文件哈希
完整性测量架构(IMA) 的第一级操作是测量阶段,它允许创建文件哈希并将其存储为这些文件的扩展属性(xattrs)。下面的部分论述了如何创建和检查文件的哈希。
先决条件
-
The
ima-evm-utils
、attr
和keyutils
软件包安装在您的系统上。 - 完整性测量架构(IMA)和扩展验证模块(EVM)启用,如 第 8.5 节 “启用完整性测量架构和扩展验证模块” 所述。
流程
创建测试文件:
# echo <Test_text> > test_file
使用私钥签署文件:
# evmctl sign --imahash --key /etc/keys/privkey.pem test_file
通过创建
test_file
文件的哈希,IMA 验证文件是否仍然未损坏。EVM 通过签名存储在test_file
扩展属性中的哈希内容来确保 IMA 哈希是真实的。(可选)检查签名文件的扩展属性:
# getfattr -m . -d test_file file: test_file security.evm=0sAwICztVdCQCAZLtD7qAezGl8nGLgqFZzMzQp7Fm1svUet2Hy7TyI2vtT9/9ZfBTKMK6Mjoyk0VX+DciS85XOCYX6WnV1LF2P/pmPRfputSEq9fVD4SWfKKj2rI7qwpndC1UqRX1BbN3aRUYeoKQdPdl6Cz+cX4d7vS56FJkFhPGlhq/UQbBnd80= security.ima=0sAfgqQ5/05X4w/ltZEfbogdI9+KM5 security.selinux="unconfined_u:object_r:admin_home_t:s0"
这个示例输出显示了与 SELinux 以及 IMA 和 EVM 哈希值相关的扩展属性。EVM 主动添加
security.evm
扩展属性,并检测对其他文件(如security.ima
)与文件内容完整性直接相关的 xattrs 的任何离线篡改。security.evm
字段的值位于基于 Hash 的消息身份验证代码(HMAC-SHA1)中,该身份验证代码是使用私钥生成的。
其它资源
- 有关内核完整性子系统的详情,请查看 官方上游 Wiki 页面。
- 有关 TPM 的更多信息,请参阅 受信任的计算组资源。
- 有关创建加密密钥的更多信息,请参阅 RHEL 7 安全指南中的受 信任和加密密钥 部分。