diff --git a/docs/zh/server/security/trusted_computing/ima.md b/docs/zh/server/security/trusted_computing/ima.md
index 4d4b35c21f42399e202e446072064b461f93e678..1c57dc988d8816aa2c22ba2dbc0aba98d99187ce 100644
--- a/docs/zh/server/security/trusted_computing/ima.md
+++ b/docs/zh/server/security/trusted_computing/ima.md
@@ -191,7 +191,7 @@ openEuler IMA/EVM机制提供的内核启动参数及说明如下:
**1) 原生IMA度量:**
-```
+```yaml
# 原生IMA度量+自定义策略
无需配置,默认开启
# 原生IMA度量+TCB默认策略
@@ -200,7 +200,7 @@ ima_policy="tcb"
**2) 基于摘要列表的IMA度量:**
-```
+```yaml
# 摘要列表IMA度量+自定义策略
ima_digest_list_pcr=11 ima_template=ima-ng initramtmpfs
# 摘要列表IMA度量+默认策略
@@ -209,7 +209,7 @@ ima_digest_list_pcr=11 ima_template=ima-ng ima_policy="exec_tcb" initramtmpfs
**3) 基于摘要列表的IMA评估,只保护文件内容:**
-```
+```yaml
# IMA评估+日志模式
ima_appraise=log ima_appraise_digest_list=digest-nometadata ima_policy="appraise_exec_tcb" initramtmpfs
# IMA评估+强制校验模式
@@ -218,7 +218,7 @@ ima_appraise=enforce ima_appraise_digest_list=digest-nometadata ima_policy="appr
**4) 基于摘要列表的IMA评估,保护文件内容和扩展属性:**
-```
+```yaml
# IMA评估+日志模式
ima_appraise=log-evm ima_appraise_digest_list=digest ima_policy="appraise_exec_tcb|appraise_exec_immutable" initramtmpfs evm=x509 evm=complete
# IMA评估+强制校验模式
@@ -322,7 +322,7 @@ digest-list-tools软件包提供IMA摘要列表文件生成和管理的工具,
| -o |
add |
-指定生成摘要列表的的操作,当前仅支持add操作,即将摘要列表添加到文件中。 |
+指定生成摘要列表的操作,当前仅支持add操作,即将摘要列表添加到文件中。 |
| -p |
@@ -360,42 +360,42 @@ digest-list-tools软件包提供IMA摘要列表文件生成和管理的工具,
-**参考使用示例:**
+**参考使用示例:**
- 场景1:为单个文件生成摘要列表/TLV摘要列表。
- ```
+ ```shell
gen_digest_lists -t metadata -f compact -i l:policy -o add -p -1 -m immutable -i I:/usr/bin/ls -d ./ -i i: gen_digest_lists -t metadata -f compact -i l:policy -o add -p -1 -m immutable -i I:/usr/bin/ls -d ./ -i i: -T
```
- 场景2: 为单个文件生成摘要列表/TLV摘要列表,并指定相对根目录。
- ```
+ ```shell
gen_digest_lists -t metadata -f compact -i l:policy -o add -p -1 -m immutable -i I:/usr/bin/ls -A /usr/ -d ./ -i i: gen_digest_lists -t metadata -f compact -i l:policy -o add -p -1 -m immutable -i I:/usr/bin/ls -A /usr/ -d ./ -i i: -T
```
- 场景3:为目录下的文件递归生成摘要列表/TLV摘要列表。
- ```
+ ```shell
gen_digest_lists -t metadata -f compact -i l:policy -o add -p -1 -m immutable -i I:/usr/bin/ -d ./ -i i:
gen_digest_lists -t metadata -f compact -i l:policy -o add -p -1 -m immutable -i I:/usr/bin/ -d ./ -i i: -T
```
- 场景4:为目录下的可执行文件递归生成摘要列表/TLV摘要列表。
- ```
+ ```shell
gen_digest_lists -t metadata -f compact -i l:policy -o add -p -1 -m immutable -i I:/usr/bin/ -d ./ -i i: -i e:gen_digest_lists -t metadata -f compact -i l:policy -o add -p -1 -m immutable -i I:/usr/bin/ -d ./ -i i: -i e: -T
```
- 场景5:为目录下的文件递归生成摘要列表/TLV摘要列表,排除部分子目录。
- ```
+ ```shell
gen_digest_lists -t metadata -f compact -i l:policy -o add -p -1 -m immutable -i I:/usr/ -d ./ -i i: -i E:/usr/bin/gen_digest_lists -t metadata -f compact -i l:policy -o add -p -1 -m immutable -i I:/usr/ -d ./ -i i: -i E:/usr/bin/ -T
```
- 场景6:rpmbuild回调脚本中,通过读取rpmbuild传入的列表文件生成摘要列表。
- ```
+ ```shell
gen_digest_lists -i M: -t metadata -f compact -d $DIGEST_LIST_DIR -i l:policy \
-i i: -o add -p -1 -m immutable -i L:$BIN_PKG_FILES -i u: \
-A $RPM_BUILD_ROOT -i e: \
@@ -409,7 +409,7 @@ digest-list-tools软件包提供IMA摘要列表文件生成和管理的工具,
-i F:/usr/lib/modules \
-i F:/lib/firmware \
-i F:/usr/lib/firmware
-
+
gen_digest_lists -i M: -t metadata -f compact -d $DIGEST_LIST_DIR.tlv \
-i l:policy -i i: -o add -p -1 -m immutable -i L:$BIN_PKG_FILES -i u: \
-T -A $RPM_BUILD_ROOT -i e: \
@@ -441,7 +441,7 @@ manage_digest_lists命令行工具主要用于将二进制格式的TLV摘要列
查看TLV摘要列表信息:
-```
+```shell
manage_digest_lists -p dump -d /etc/ima/digest_lists.tlv/
```
@@ -451,7 +451,7 @@ manage_digest_lists -p dump -d /etc/ima/digest_lists.tlv/
IMA策略文件为文本文件,一个文件中可包含若干条按照换行符`\n`分隔的规则语句,每条规则语句都必须以 action 关键字代表的**动作**开头,后接**筛选条件**:
-```
+```shell
<筛选条件1> [筛选条件2] [筛选条件3]...
```
@@ -615,19 +615,19 @@ action表示该条策略具体的动作,一条策略只能选一个 action,
**步骤1:** 用户可通过配置启动参数或手动配置的方式,指定度量策略。通过启动参数配置IMA策略的示例如下:
-```
+```shell
ima_policy="tcb"
```
手动配置IMA策略的示例如下:
-```
+```shell
echo "measure func=BPRM_CHECK" > /sys/kernel/security/ima/policy
```
**步骤2:** 重启系统,用户可实时检查度量日志获取当前的度量情况:
-```
+```shell
cat /sys/kernel/security/ima/ascii_runtime_measurements
```
@@ -637,7 +637,7 @@ cat /sys/kernel/security/ima/ascii_runtime_measurements
**步骤1:** 配置启动参数,重启后进入fix模式:
-```
+```shell
ima_appraise=fix ima_policy=appraise_tcb
```
@@ -645,25 +645,25 @@ ima_appraise=fix ima_policy=appraise_tcb
对于不可变文件(如二进制程序文件)可以使用签名模式,将文件摘要值的签名写入IMA扩展属性中。举例如下(其中`/path/to/ima.key`指的是和IMA证书匹配的签名私钥):
-```
+```shell
find /usr/bin -fstype ext4 -type f -executable -uid 0 -exec evmctl -a sha256 ima_sign --key /path/to/ima.key '{}' \;
```
对于可变文件(如数据文件)可以使用哈希模式,将文件的摘要值写入IMA扩展属性中。IMA支持自动标记机制,即在fix模式下仅需触发文件访问,即可自动生成IMA扩展属性:
-```
+```shell
find / -fstype ext4 -type f -uid 0 -exec dd if='{}' of=/dev/null count=0 status=none \;
```
可通过如下命令检查文件是否被成功标记了IMA扩展属性(security.ima):
-```
+```shell
getfattr -m - -d /sbin/init
```
**步骤3:** 配置启动参数,修改IMA评估为log或enforce模式后,重启系统:
-```
+```shell
ima_appraise=enforce ima_policy=appraise_tcb
```
@@ -673,7 +673,7 @@ ima_appraise=enforce ima_policy=appraise_tcb
IMA摘要列表特性使用前,用户需安装`ima-evm-utils`和`digest-list-tools`软件包:
-```
+```shell
yum install ima-evm-utils digest-list-tools
```
@@ -685,7 +685,7 @@ yum install ima-evm-utils digest-list-tools
**/etc/ima/digest_lists/0-metadata_list-compact-\**
-为IMA摘要列表文件,通过`gen_digest_lists`命令生成(生成方法详见[gen_digest_lists工具](#gen_digest_list工具)),该文件为二进制格式,包含header信息以及一连串SHA256哈希值,分别代表合法的文件内容摘要值和文件扩展属性摘要值。该文件被度量或评估后,最终被导入内核,并以该文件中的白名单摘要值为基准进行IMA摘要列表度量或评估。
+为IMA摘要列表文件,通过`gen_digest_lists`命令生成(生成方法详见[gen_digest_lists工具](#gen_digest_lists工具)),该文件为二进制格式,包含header信息以及一连串SHA256哈希值,分别代表合法的文件内容摘要值和文件扩展属性摘要值。该文件被度量或评估后,最终被导入内核,并以该文件中的白名单摘要值为基准进行IMA摘要列表度量或评估。
**/etc/ima/digest_lists/0-metadata_list-rpm-\**
@@ -711,19 +711,19 @@ yum install ima-evm-utils digest-list-tools
即原生的IMA签名机制,将签名信息按照一定格式,存放在`security.ima`扩展属性中。可通过`evmctl`命令生成并添加:
-```
+```shell
evmctl ima_sign --key /path/to/ima.key -a sha256
```
也可添加`-f`参数,将签名信息和头信息存入独立的文件中:
-```
+```shell
evmctl ima_sign -f --key /path/to/ima.key -a sha256
```
在开启IMA摘要列表评估模式下,可直接将摘要列表文件路径写入内核接口,实现摘要列表的导入/删除。该过程会自动触发评估,基于`security.ima`扩展属性完成对摘要列表文件内容的签名验证:
-```
+```shell
# 导入IMA摘要列表文件
echo > /sys/kernel/security/ima/digest_list_data
# 删除IMA摘要列表文件
@@ -738,11 +738,11 @@ openEuler 24.03 LTS版本开始支持IMA专用签名密钥,并采用CMS签名
其签名机制为:
-1) 将CMS签名信息追加到IMA摘要列表文件末尾;
+(1) 将CMS签名信息追加到IMA摘要列表文件末尾;
-2) 填充结构体并添加到签名信息末尾,结构体定义如下:
+(2) 填充结构体并添加到签名信息末尾,结构体定义如下:
-```
+```cpp
struct module_signature {
u8 algo; /* Public-key crypto algorithm [0] */
u8 hash; /* Digest algorithm [0] */
@@ -754,11 +754,11 @@ struct module_signature {
};
```
-3) 添加魔鬼字符串`"~Module signature appended~\n"`
+(3) 添加魔鬼字符串`"~Module signature appended~\n"`
此步骤的参考脚本如下:
-```
+```shell
#!/bin/bash
DIGEST_FILE=$1 # IMA摘要列表文件路径
SIG_FILE=$2 # IMA摘要列表签名信息保存路径
@@ -788,7 +788,7 @@ openEuler 22.03 LTS版本支持复用RPM签名机制实现IMA摘要列表文件
在开启IMA度量模式下,导入IMA摘要列表文件无需经过签名验证,可直接将路径写入内核接口,实现摘要列表的导入/删除:
-```
+```shell
# 导入IMA摘要列表文件
echo > /sys/kernel/security/ima/digest_list_data
# 删除IMA摘要列表文件
@@ -801,7 +801,7 @@ echo > /sys/kernel/security/ima/digest_list_data_del
对于已包含签名信息的IMA摘要列表文件(IMA扩展属性签名或IMA摘要列表追加签名),可直接将路径写入内核接口,实现摘要列表的导入/删除。该过程会自动触发评估,基于`security.ima`扩展属性完成对摘要列表文件内容的签名验证:
-```
+```shell
# 导入IMA摘要列表文件
echo > /sys/kernel/security/ima/digest_list_data
# 删除IMA摘要列表文件
@@ -812,7 +812,7 @@ echo > /sys/kernel/security/ima/digest_list_data_del
对于复用RPM签名的IMA摘要列表文件,需要调用`upload_digest_lists`命令实现导入。具体命令如下(注意指定的路径为对应的RPM摘要列表):
-```
+```shell
# 导入IMA摘要列表文件
upload_digest_lists add
# 删除IMA摘要列表文件
@@ -831,13 +831,13 @@ upload_digest_lists del
openEuler RPM工具链支持`%__brp_digest_list`宏定义,配置格式如下:
-```
+```shell
%__brp_digest_list /usr/lib/rpm/brp-digest-list %{buildroot}
```
当配置了该宏定义后,当用户调用`rpmbuild`命令进行软件包构建时,在RPM打包阶段会调用`/usr/lib/rpm/brp-digest-list`脚本进行摘要列表的生成和签名等流程。openEuler默认针对可执行程序、动态库、内核模块等关键文件生成摘要列表。用户也可以通过修改脚本,自行配置生成摘要列表的范围和指定签名密钥。如下示例使用用户自定义的签名密钥`/path/to/ima.key`进行摘要列表签名。
-```
+```shell
...... (line 66)
DIGEST_LIST_TLV_PATH="$DIGEST_LIST_DIR.tlv/0-metadata_list-compact_tlv-$(basename $BIN_PKG_FILES)"
[ -f $DIGEST_LIST_TLV_PATH ] || exit 0
@@ -858,19 +858,19 @@ echo $DIGEST_LIST_DIR.sig/0-metadata_list-compact-$(basename $BIN_PKG_FILES).sig
**步骤1:** 用户需要配置启动参数度量策略,开启IMA度量功能,具体步骤同**原生IMA度量**,不同的是需要单独配置度量所使用的TPM PCR寄存器,启动参数示例如下:
-```
+```shell
ima_policy=exec_tcb ima_digest_list_pcr=11
```
**步骤2:** 用户导入IMA摘要列表,以`bash`软件包的摘要列表为例:
-```
+```shell
echo /etc/ima/digest_lists/0-metadata_list-compact-bash-5.1.8-6.oe2203sp1.x86_64 > /sys/kernel/security/ima/digest_list_data
```
可查询到IMA摘要列表的度量日志:
-```
+```shell
cat /sys/kernel/security/ima/ascii_runtime_measurements
```
@@ -884,13 +884,13 @@ cat /sys/kernel/security/ima/ascii_runtime_measurements
**步骤1:** 执行`dracut`命令将摘要列表文件写入initrd:
-```
+```shell
dracut -f -e xattr
```
**步骤2:** 配置启动参数和IMA策略,典型的配置如下:
-```
+```shell
# 基于摘要列表的IMA评估log/enforce模式,只保护文件内容,配置默认策略为appraise_exec_tcb
ima_appraise=log ima_appraise_digest_list=digest-nometadata ima_policy="appraise_exec_tcb" initramtmpfs module.sig_enforce
ima_appraise=enforce ima_appraise_digest_list=digest-nometadata ima_policy="appraise_exec_tcb" initramtmpfs module.sig_enforce
@@ -907,7 +907,7 @@ ima_appraise=enforce-evm ima_appraise_digest_list=digest ima_policy="appraise_ex
**步骤1:** 配置启动参数,典型的配置如下:
-```
+```shell
# 基于摘要列表的IMA评估log/enforce模式,只保护文件内容,无默认策略
ima_appraise=log ima_appraise_digest_list=digest-nometadata initramtmpfs
ima_appraise=enforce ima_appraise_digest_list=digest-nometadata initramtmpfs
@@ -920,7 +920,7 @@ ima_appraise=enforce-evm ima_appraise_digest_list=digest initramtmpfs evm=x509 e
**步骤2:** 导入IMA策略,将策略文件的全路径写入内核接口:
-```
+```shell
echo /path/to/policy > /sys/kernel/security/ima/policy
```
@@ -930,7 +930,8 @@ echo /path/to/policy > /sys/kernel/security/ima/policy
>
> openEuler 22.03 LTS版本的策略模板如下(复用RPM签名场景):
>
-```
+
+```shell
# 不评估securityfs文件系统的访问行为
dont_appraise fsmagic=0x73636673
# 其他用户自定义的dont_appraise规则
@@ -944,10 +945,12 @@ appraise func=BPRM_CHECK appraise_type=imasig
# 其他用户自定义的appraise规则
......
```
+
>
> openEuler 24.03 LTS版本的策略模板如下(IMA扩展属性签名或追加签名场景):
>
-```
+
+```shell
# 用户自定义的dont_appraise规则
......
# 评估导入的IMA摘要列表文件
@@ -960,7 +963,7 @@ appraise func=DIGEST_LIST_CHECK appraise_type=imasig|modsig
openEuler 22.03 LTS的摘要列表导入方式如下(复用RPM签名的IMA摘要列表):
-```
+```shell
# 导入digest_list_tools软件包的摘要列表
echo /etc/ima/digest_lists/0-metadata_list-compact-digest-list-tools-0.3.95-13.x86_64 > /sys/kernel/security/ima/digest_list_data
echo /etc/ima/digest_lists/0-parser_list-compact-libexec > /sys/kernel/security/ima/digest_list_data
@@ -972,7 +975,7 @@ cat /sys/kernel/security/ima/digests_count
openEuler 24.03 LTS的摘要列表导入方式如下(追加签名的IMA摘要列表):
-```
+```shell
find /etc/ima/digest_lists -name "0-metadata_list-compact-*" -exec echo {} > /sys/kernel/security/ima/digest_list_data \;
```
@@ -991,7 +994,7 @@ find /etc/ima/digest_lists -name "0-metadata_list-compact-*" -exec echo {} > /sy
**步骤1:** 生成根证书,以openssl命令为例:
-```
+```shell
echo 'subjectKeyIdentifier=hash' > root.cfg
openssl genrsa -out root.key 4096
openssl req -new -sha256 -key root.key -out root.csr -subj "/C=AA/ST=BB/O=CC/OU=DD/CN=openeuler test ca"
@@ -1001,20 +1004,20 @@ openssl x509 -in root.crt -out root.der -outform DER
**步骤2:** 获取openEuler kernel源码,以最新的OLK-5.10分支为例:
-```
+```shell
git clone https://gitee.com/openeuler/kernel.git -b OLK-5.10
```
**步骤3:** 进入源码目录,并将根证书拷贝至目录下:
-```
+```shell
cd kernel
cp /path/to/root.der .
```
修改config文件的CONFIG_SYSTEM_TRUSTED_KEYS选项:
-```
+```shell
CONFIG_SYSTEM_TRUSTED_KEYS="./root.crt"
```
@@ -1022,7 +1025,7 @@ CONFIG_SYSTEM_TRUSTED_KEYS="./root.crt"
**步骤5:** 重启后检查证书导入成功:
-```
+```shell
keyctl show %:.builtin_trusted_keys
```
@@ -1030,7 +1033,7 @@ keyctl show %:.builtin_trusted_keys
**步骤1:** 基于根证书生成子证书,以openssl命令为例:
-```
+```shell
echo 'subjectKeyIdentifier=hash' > ima.cfg
echo 'authorityKeyIdentifier=keyid,issuer' >> ima.cfg
echo 'keyUsage=digitalSignature' >> ima.cfg
@@ -1042,21 +1045,21 @@ openssl x509 -outform DER -in ima.crt -out x509_ima.der
**步骤2:** 将IMA证书拷贝到/etc/keys目录下:
-```
+```shell
mkdir -p /etc/keys/
cp x509_ima.der /etc/keys/
```
**步骤3:** 打包initrd,将IMA证书和摘要列表置入initrd镜像中:
-```
+```shell
echo 'install_items+=" /etc/keys/x509_ima.der "' >> /etc/dracut.conf
dracut -f -e xattr
```
**步骤4:** 重启后检查证书导入成功:
-```
+```shell
keyctl show %:.ima
```
@@ -1151,7 +1154,7 @@ IMA默认策略可能包含对应用程序执行、内核模块加载等关键
用户需要通过log模式进入系统进行问题定位和修复。重启系统,进入grub界面修改启动参数,采用log模式启动:
-```
+```shell
ima_appraise=log
```
@@ -1159,7 +1162,7 @@ ima_appraise=log
**步骤1:** 检查keyring中的IMA证书:
-```
+```shell
keyctl show %:.builtin_trusted_keys
```
@@ -1201,7 +1204,7 @@ keyctl show %:.builtin_trusted_keys
如果用户导入了其他内核根证书,也同样需要通过`keyctl`命令查询确认证书是否被成功导入。openEuler默认不使用IMA密钥环,如果用户存在使用的情况,则需要通过如下命令查询IMA密钥环中是否存在用户证书:
-```
+```shell
keyctl show %:.ima
```
@@ -1211,39 +1214,39 @@ keyctl show %:.ima
用户可通过如下命令查询当前系统中的摘要列表文件:
-```
+```shell
ls /etc/ima/digest_lists | grep '_list-compact-'
```
对于每个摘要列表文件,需要检查存在**以下三种之一**的签名信息:
-1) 检查该摘要列表文件存在对应的**RPM摘要列表文件**,且**RPM摘要列表文件**的ima扩展属性中包含签名值。以bash软件包的摘要列表为例,摘要列表文件路径为:
+(1) 检查该摘要列表文件存在对应的**RPM摘要列表文件**,且**RPM摘要列表文件**的ima扩展属性中包含签名值。以bash软件包的摘要列表为例,摘要列表文件路径为:
-```
+```shell
/etc/ima/digest_lists/0-metadata_list-compact-bash-5.1.8-6.oe2203sp1.x86_64
```
RPM摘要列表路径为:
-```
+```shell
/etc/ima/digest_lists/0-metadata_list-rpm-bash-5.1.8-6.oe2203sp1.x86_64
```
检查RPM摘要列表签名,即文件的`security.ima`扩展属性不为空:
-```
+```shell
getfattr -n security.ima /etc/ima/digest_lists/0-metadata_list-rpm-bash-5.1.8-6.oe2203sp1.x86_64
```
-2) 检查摘要列表文件的`security.ima`扩展属性不为空:
+(2) 检查摘要列表文件的`security.ima`扩展属性不为空:
-```
+```shell
getfattr -n security.ima /etc/ima/digest_lists/0-metadata_list-compact-bash-5.1.8-6.oe2203sp1.x86_64
```
-3) 检查摘要列表文件的末尾包含了签名信息,可通过检查文件内容末尾是否包含`~Module signature appended~`魔鬼字符串进行判断(仅openEuler 24.03 LTS及之后版本支持的签名方式):
+(3) 检查摘要列表文件的末尾包含了签名信息,可通过检查文件内容末尾是否包含`~Module signature appended~`魔鬼字符串进行判断(仅openEuler 24.03 LTS及之后版本支持的签名方式):
-```
+```shell
tail -c 28 /etc/ima/digest_lists/0-metadata_list-compact-kernel-6.6.0-28.0.0.34.oe2403.x86_64
```
@@ -1253,7 +1256,7 @@ tail -c 28 /etc/ima/digest_lists/0-metadata_list-compact-kernel-6.6.0-28.0.0.34.
在确保摘要列表已携带签名信息的情况下,用户还需要确保摘要列表采用正确的私钥签名,即签名私钥和内核中的证书匹配。除用户自行进行私钥检查外,还可通过dmesg日志或audit日志(默认路径为`/var/log/audit/audit.log`)判断是否有签名校验失败的情况发生。典型的日志输出如下:
-```
+```shell
type=INTEGRITY_DATA msg=audit(1722578008.756:154): pid=3358 uid=0 auid=0 ses=1 subj=unconfined_u:unconfined_r:haikang_t:s0-s0:c0.c1023 op=appraise_data cause=invalid-signature comm="bash" name="/root/0-metadata_list-compact-bash-5.1.8-6.oe2203sp1.x86_64" dev="dm-0" ino=785161 res=0 errno=0UID="root" AUID="root"
```
@@ -1263,13 +1266,13 @@ type=INTEGRITY_DATA msg=audit(1722578008.756:154): pid=3358 uid=0 auid=0 ses=1 s
用户需要通过如下命令查询当前initrd中是否存在摘要列表文件:
-```
+```shell
lsinitrd | grep 'etc/ima/digest_lists'
```
如果未查询到摘要列表文件,则用户需要重新制作initrd,并再次检查摘要列表导入成功:
-```
+```shell
dracut -f -e xattr
```
@@ -1287,13 +1290,13 @@ dracut -f -e xattr
对于出现文件执行失败的场景,首先需要确定摘要列表文件已经成功导入内核,用户可以检查摘要列表数量判断导入情况:
-```
+```shell
cat /sys/kernel/security/ima/digests_count
```
然后用户可通过audit日志(默认路径为`/var/log/audit/audit.log`)判断具体哪个文件校验失败以及原因。典型的日志输出如下:
-```
+```shell
type=INTEGRITY_DATA msg=audit(1722811960.997:2967): pid=7613 uid=0 auid=0 ses=1 subj=unconfined_u:unconfined_r:haikang_t:s0-s0:c0.c1023 op=appraise_data cause=IMA-signature-required comm="bash" name="/root/test" dev="dm-0" ino=814424 res=0 errno=0UID="root" AUID="root"
```
@@ -1307,7 +1310,7 @@ type=INTEGRITY_DATA msg=audit(1722811960.997:2967): pid=7613 uid=0 auid=0 ses=1
建议用户确认当前内核中包含以下几本签名证书:
-```
+```shell
# keyctl show %:.builtin_trusted_keys
Keyring
566488577 ---lswrv 0 0 keyring: .builtin_trusted_keys
@@ -1318,7 +1321,7 @@ Keyring
如缺少证书,建议将内核升级至最新版本。
-```
+```shell
yum update kernel
```
@@ -1328,7 +1331,7 @@ openEuler 24.03 LTS及之后版本已具备IMA专用证书,且支持证书链
IMA摘要列表导入存在检查机制,如果某次导入过程中,摘要列表的签名校验失败,则会关闭摘要列表导入功能,从而导致后续即使正确签名的摘要列表文件也无法被导入。用户可检查dmesg日志中是否存在如下打印确认是否为该原因导致:
-```
+```shell
# dmesg
ima: 0-metadata_list-compact-bash-5.1.8-6.oe2203sp1.x86_64 not appraised, disabling digest lists lookup for appraisal
```