长期支持版本

    社区创新版本

      常见问题与解决方法

      问题1:开启IMA评估enforce模式并配置默认策略后,系统启动失败

      原因分析

      IMA默认策略可能包含对应用程序执行、内核模块加载等关键文件访问流程的校验,如果关键文件访问失败,可能导致系统无法启动。通常原因有:

      1. IMA校验证书未导入内核,导致摘要列表无法被正确校验;
      2. 摘要列表文件未正确签名,导致摘要列表校验失败;
      3. 摘要列表文件未导入initrd中,导致启动过程无法导入摘要列表;
      4. 摘要列表文件和应用程序不匹配,导致应用程序匹配已导入的摘要列表失败。

      解决方法

      用户需要通过log模式进入系统进行问题定位和修复。重启系统,进入grub界面修改启动参数,采用log模式启动:

      ima_appraise=log
      

      系统启动后,可参考如下流程进行问题排查:

      步骤1: 检查keyring中的IMA证书:

      keyctl show %:.builtin_trusted_keys
      

      对于openEuler LTS版本,至少应存在以下几本内核证书(其他未列出版本可根据发布时间前推参考):

      版本证书
      openEuler 22.03 LTSprivate OBS b25e7f66
      openEuler 22.03 LTS SP1/2/3private OBS b25e7f66
      openeuler <openeuler@compass-ci.com> b675600b
      openEuler 22.03 LTS SP4private OBS b25e7f66
      openeuler <openeuler@compass-ci.com> b675600b
      openeuler <openeuler@compass-ci.com> fb37bc6f
      openEuler 24.03openEuler kernel ICA 1: 90bb67eb4b57eb62bf6f867e4f56bd4e19e7d041

      如果用户导入了其他内核根证书,也同样需要通过keyctl命令查询确认证书是否被成功导入。openEuler默认不使用IMA密钥环,如果用户存在使用的情况,则需要通过如下命令查询IMA密钥环中是否存在用户证书:

      keyctl show %:.ima
      

      如果排查结果为证书未正确导入,则用户需要根据用户证书导入场景章节进行流程排查。

      步骤2: 检查摘要列表携带签名信息:

      用户可通过如下命令查询当前系统中的摘要列表文件:

      ls /etc/ima/digest_lists | grep '_list-compact-'
      

      对于每个摘要列表文件,需要检查存在以下三种之一的签名信息:

      1. 检查该摘要列表文件存在对应的RPM摘要列表文件,且RPM摘要列表文件的ima扩展属性中包含签名值。以bash软件包的摘要列表为例,摘要列表文件路径为:
      /etc/ima/digest_lists/0-metadata_list-compact-bash-5.1.8-6.oe2203sp1.x86_64
      

      RPM摘要列表路径为:

      /etc/ima/digest_lists/0-metadata_list-rpm-bash-5.1.8-6.oe2203sp1.x86_64
      

      检查RPM摘要列表签名,即文件的security.ima扩展属性不为空:

      getfattr -n security.ima /etc/ima/digest_lists/0-metadata_list-rpm-bash-5.1.8-6.oe2203sp1.x86_64
      
      1. 检查摘要列表文件的security.ima扩展属性不为空:
      getfattr -n security.ima /etc/ima/digest_lists/0-metadata_list-compact-bash-5.1.8-6.oe2203sp1.x86_64
      
      1. 检查摘要列表文件的末尾包含了签名信息,可通过检查文件内容末尾是否包含~Module signature appended~魔鬼字符串进行判断(仅openEuler 24.03 LTS及之后版本支持的签名方式):
      tail -c 28 /etc/ima/digest_lists/0-metadata_list-compact-kernel-6.6.0-28.0.0.34.oe2403.x86_64
      

      如果排查结果为摘要列表未包含签名信息,则用户需要根据摘要列表签名机制说明章节进行流程排查。

      步骤3: 检查摘要列表的签名信息正确:

      在确保摘要列表已携带签名信息的情况下,用户还需要确保摘要列表采用正确的私钥签名,即签名私钥和内核中的证书匹配。除用户自行进行私钥检查外,还可通过dmesg日志或audit日志(默认路径为/var/log/audit/audit.log)判断是否有签名校验失败的情况发生。典型的日志输出如下:

      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"
      

      如果检查结果为签名信息错误,则用户需要根据摘要列表签名机制说明章节进行流程排查。

      步骤4: 检查initrd中是否导入摘要列表文件:

      用户需要通过如下命令查询当前initrd中是否存在摘要列表文件:

      lsinitrd | grep 'etc/ima/digest_lists'
      

      如果未查询到摘要列表文件,则用户需要重新制作initrd,并再次检查摘要列表导入成功:

      dracut -f -e xattr
      

      步骤5: 检查IMA摘要列表和应用程序是否匹配:

      参考问题2章节

      问题2:开启IMA评估enforce模式后,部分文件执行失败

      原因分析

      开启IMA评估enforce模式后,对于配置IMA策略的文件访问,如果文件的内容或扩展属性设置有误(和导入的摘要列表不匹配),则可能会导致文件访问被拒绝。通常原因有:

      1. 摘要列表未成功导入(可参考FAQ1);

      2. 文件内容或属性被篡改。

      解决方法

      对于出现文件执行失败的场景,首先需要确定摘要列表文件已经成功导入内核,用户可以检查摘要列表数量判断导入情况:

      cat /sys/kernel/security/ima/digests_count
      

      然后用户可通过audit日志(默认路径为/var/log/audit/audit.log)判断具体哪个文件校验失败以及原因。典型的日志输出如下:

      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"
      

      在确定校验失败的文件后,可对比TLV摘要列表确定文件被篡改的原因。对于未开启扩展属性校验的场景,仅对比文件SHA256哈希值和TLV摘要列表中的IMA digest项即可,对于开启扩展属性校验的场景,则还需要对比文件当前的属性和TLV摘要列表中显示扩展属性的区别。

      在确定问题原因后,可通过还原文件的内容及属性,或对当前文件再次生成摘要列表,签名并导入内核的方式解决问题。

      问题3:开启IMA评估模式后,跨openEuler 22.03 LTS SP版本安装软件包时出现报错信息

      原因分析

      开启IMA评估模式后,当安装不同版本的openEuler 22.03 LTS的软件包时,会自动触发IMA摘要列表的导入。其中包含对摘要列表的签名验证流程,即使用内核中的证书验证摘要列表的签名。由于openEuler在演进过程中,签名证书发生变化,因此部分跨版本安装场景存在后向兼容问题(无前向兼容问题,即新版本的内核可正常校验旧版本的IMA摘要列表文件)。

      解决方法

      建议用户确认当前内核中包含以下几本签名证书:

      # keyctl show %:.builtin_trusted_keys
      Keyring
       566488577 ---lswrv      0     0  keyring: .builtin_trusted_keys
       383580336 ---lswrv      0     0   \_ asymmetric: openeuler <openeuler@compass-ci.com> b675600b
       453794670 ---lswrv      0     0   \_ asymmetric: private OBS b25e7f66
       938520011 ---lswrv      0     0   \_ asymmetric: openeuler <openeuler@compass-ci.com> fb37bc6f
      

      如缺少证书,建议将内核升级至最新版本。

      yum update kernel
      

      openEuler 24.03 LTS及之后版本已具备IMA专用证书,且支持证书链校验,证书生命周期可覆盖整个LTS版本。

      问题4:开启IMA摘要列表评估模式后,IMA摘要列表文件签名正确,但是导入失败

      原因分析

      IMA摘要列表导入存在检查机制,如果某次导入过程中,摘要列表的签名校验失败,则会关闭摘要列表导入功能,从而导致后续即使正确签名的摘要列表文件也无法被导入。用户可检查dmesg日志中是否存在如下打印确认是否为该原因导致:

      # dmesg
      ima: 0-metadata_list-compact-bash-5.1.8-6.oe2203sp1.x86_64 not appraised, disabling digest lists lookup for appraisal
      

      如上述日志,则说明在开启IMA摘要列表评估模式的情况下,已经导入了一个签名错误的摘要列表文件,从而导致功能关闭。

      解决方法

      用户需要重启系统,并修复错误的摘要列表签名信息。

      问题5:openEuler 24.03 LTS及之后版本导入用户自定义的IMA证书失败

      Linux 6.6内核新增了对导入证书的字段校验限制,对于导入IMA密钥环的证书,需要满足如下约束(遵循X.509标准格式):

      • 为数字签名证书,即设置keyUsage=digitalSignature字段;
      • 非CA证书,即不可设置basicConstraints=CA:TRUE字段;
      • 非中间证书,即不可设置keyUsage=keyCertSign字段。

      问题6:开启IMA评估模式后kdump服务启动失败

      开启IMA评估enforce模式后,如果IMA策略中配置了如下KEXEC_KERNEL_CHECK规则,可能导致kdump服务启动失败。

      appraise func=KEXEC_KERNEL_CHECK appraise_type=imasig
      

      原因是在该场景下,所有通过KEXEC加载的文件都需要经过完整性校验,因此内核限制kdump加载内核映像文件时必须使用kexec_file_load系统调用。可通过修改/etc/sysconfig/kdump配置文件的KDUMP_FILE_LOAD开启kexec_file_load系统调用。

      KDUMP_FILE_LOAD="on"
      

      同时,kexec_file_load系统调用自身也会执行文件的签名校验,因此要求被加载的内核映像文件必须包含正确的安全启动签名,而且当前内核中必须包含对应的验签证书。

      问题7:RAS安装后无法启动

      原因分析

      因为在当前RAS的设计逻辑中,程序启动后需要从当前目录查找一份名为 ecdsakey.pub 的文件进行读取并作为之后访问该程序的身份验证码,若当前目录没有该文件,则RAS启动会报错。

      解决方法

      解决方法一:运行 ras -T 生成测试用token后会生成 ecdsakey.pub

      解决方法二:自行部署oauth2认证服务后,将对应JWT token生成方对应的验证公钥保存为 ecdsakey.pub

      问题8:RAS启动后,通过restapi无法访问

      因为RAS默认以https模式启动,开发者需要向RAS提供合法的证书才能正常访问,而http模式下启动的RAS则不需要提供证书。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份