24.5. 对 systemd 无法加载 IMA 策略的故障排除
如果 systemd 没有加载 /etc/ima/ima-policy,系统挂起并显示错误 systemd[1]: Freezing execution。
[ 5.829882] ima: policy update failed [ 5.830094] ima: signed policy file (specified as an absolute pathname) required [!!!!!!] Failed to load IMA policy. … [ 5.859994] systemd[1]: Freezing execution.
[ 5.829882] ima: policy update failed
[ 5.830094] ima: signed policy file (specified as an absolute pathname) required
[!!!!!!] Failed to load IMA policy.
…
[ 5.859994] systemd[1]: Freezing execution.
您可以使用三种方法来恢复您的系统。
24.5.1. 关闭安全引导 复制链接链接已复制到粘贴板!
如果因为未签名策略而无法加载策略,您可能会看到类似以下示例的错误。
作为临时解决方案,您可以临时关闭安全引导,并遵循 为 UEFI 系统部署自定义签名的 IMA 策略 来解决这个问题。
24.5.2. 使用 init=/bin/bash 内核参数引导系统 复制链接链接已复制到粘贴板!
要使用 init=/bin/bash 内核参数引导系统,您可以使用以下步骤:
-
修改 bootloader 条目并添加
init=/bin/bash内核参数。 访问 shell 后,使用写权限重新挂载系统:
mount -o remount,rw /
# mount -o remount,rw /Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/etc/ima/ima-policy重命名为/etc/ima/ima-policy.bak:mv /etc/ima/ima-policy /etc/ima/ima-policy.bak
# mv /etc/ima/ima-policy /etc/ima/ima-policy.bakCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启系统:
echo 1 > /proc/sys/kernel/sysrq printf "s\nb" > /proc/sysrq-trigger
# echo 1 > /proc/sys/kernel/sysrq # printf "s\nb" > /proc/sysrq-triggerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 解决
/etc/ima/ima-policy.bak中的任何问题,并验证是否可以载入该策略:echo /etc/ima/ima-policy.bak >> /sys/kernel/security/integrity/ima/policy
# echo /etc/ima/ima-policy.bak >> /sys/kernel/security/integrity/ima/policyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/etc/ima/ima-policy.bak重命名为/etc/ima/ima-policy:mv /etc/ima/ima-policy.bak /etc/ima/ima-policy
# mv /etc/ima/ima-policy.bak /etc/ima/ima-policyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
24.5.3. 使用 initcall_blacklist=init_ima 内核参数引导系统 复制链接链接已复制到粘贴板!
如果系统挂起并显示错误 systemd[1]: Freezing execution,您可以使用 initcall_blacklist=init_ima 内核参数引导系统,以禁用 IMA 策略。
-
修改引导装载程序条目并添加
initcall_blacklist=init_ima内核参数。 将
/etc/ima/ima-policy重命名为/etc/ima/ima-policy.bak:mv /etc/ima/ima-policy /etc/ima/ima-policy.bak
# mv /etc/ima/ima-policy /etc/ima/ima-policy.bakCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启系统:
systemctl reboot
# systemctl rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow 解决
/etc/ima/ima-policy.bak中的任何问题,并验证是否可以载入该策略:echo /etc/ima/ima-policy.bak >> /sys/kernel/security/integrity/ima/policy
# echo /etc/ima/ima-policy.bak >> /sys/kernel/security/integrity/ima/policyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/etc/ima/ima-policy.bak重命名为/etc/ima/ima-policy:mv /etc/ima/ima-policy.bak /etc/ima/ima-policy
# mv /etc/ima/ima-policy.bak /etc/ima/ima-policyCopy to Clipboard Copied! Toggle word wrap Toggle overflow