关于Vanilla Linux根文件系统签名的技术咨询
关于Vanilla Linux根文件系统签名的技术咨询
嗨Zvika,针对你的问题,答案是肯定的——你可以实现根文件系统的签名校验,一旦被攻击者篡改,系统就会拒绝启动。结合你用的4.9.20 vanilla x86_64内核和GRUB启动方式,具体可以通过以下步骤配置:
1. 开启内核完整性相关配置
首先你需要重新编译vanilla内核,通过make menuconfig或make xconfig开启以下关键配置项:
CONFIG_INTEGRITY:启用内核完整性框架CONFIG_IMA:开启Integrity Measurement Architecture(IMA),这是实现文件校验的核心组件CONFIG_IMA_APPRAISE:开启IMA的校验功能,允许内核验证文件签名/哈希CONFIG_EXT3_FS_SECURITY:让ext3文件系统支持安全属性,用于存储文件签名CONFIG_EXT3_FS_XATTR:确保ext3支持扩展属性,这是存储签名的必要前提
编译完成后替换原有内核,确保GRUB能正确加载新内核。
2. 配置IMA进行文件系统校验
IMA需要在根文件系统挂载前就启动工作,所以需要调整initramfs并完成文件签名:
- 安装
ima-evm-utils工具集,它包含了签名文件和管理IMA策略的命令 - 重新生成initramfs(比如Debian系用
update-initramfs -u),确保IMA相关工具和配置被包含进去 - 生成RSA密钥对:用
evmctl create_key生成私钥和公钥,私钥一定要离线妥善保管,公钥需要嵌入到内核或initramfs中 - 为根文件系统的关键文件签名:比如
/bin/*、/sbin/*、/lib/*、/init等核心文件,执行evmctl sign /path/to/file,签名会存储在文件的安全扩展属性中 - 配置内核参数:在GRUB的内核启动参数中添加
ima_appraise=fix ima_policy=tcb,其中tcb表示只校验可信计算基内的文件,fix表示拒绝访问校验失败的文件
3. GRUB配合配置
- 确保GRUB正确传递上述IMA内核参数:编辑
/etc/default/grub,在GRUB_CMDLINE_LINUX中添加IMA相关参数,然后执行update-grub更新GRUB配置 - (可选)如果需要额外安全层,可以为内核和initramfs签名,再配置GRUB验证这些组件的签名,防止内核本身被篡改
4. 适配ext3文件系统的注意事项
- 挂载根文件系统时需添加扩展属性相关参数:在
/etc/fstab中根文件系统的挂载选项里加上user_xattr,security_xattr,或者在GRUB内核参数中用rootflags=user_xattr,security_xattr - 4.9内核的IMA功能已稳定,但部分高级特性不如新内核,建议保持参数配置简洁,优先确保基础校验功能正常
完成以上配置后,一旦攻击者篡改了根文件系统中的关键文件,IMA校验会失败,内核会拒绝访问该文件,导致系统无法正常启动,从而达到你想要的防护效果。
备注:内容来源于stack exchange,提问作者Zvi Vered
相关产品推荐
相关产品推荐

