如何使用安全启动保护initrd和grub.cfg?


8

我将默认的ubuntu方法与shim和grub2结合使用,并结合了自己的平台密钥(带有sbsign的自签名shim)和加密的根分区,以安全引导我的ubuntu安装。但这仅验证grubx64.efi和内核,而不能保护未加密启动分区上的initrd.img和grub.cfg文件免受恶意修改。

那么,在使用它们引导之前,如何验证initrd和grub的配置(可能使用sha256哈希)?验证可以在垫片,grub或其他我可能使用的其他工具中进行,以补充或替代垫片和/或grub。

这个问题的目的是防止在修改后的环境(内核命令行和initrd)下执行内核,以防止将根分区加密密码泄漏到任何地方。

尽管已经阅读了几天有关安全启动的Web教程/博客,但仍未找到任何方法来验证启动配置,包括Ubuntu和Linux Foundation的PreLoader.efi,所有这些都解释了如何验证包括内核模块在内的可执行文件的工作方式,但是没有一个其中提到了grub.cfg和initrd(其中的shell脚本和配置文件),因此看起来我是第一个在引导过程中要求验证非二进制文件的人。我发现过的最好的资料是罗德·史密斯Rod Smith)的资料

我还没有尝试过修改shim或grub的源代码,创建一个fork或直接对其进行贡献。那是唯一的方法吗?


您的交叉发布是从昨天开始的,多一点耐心是合适的,并且交叉发布肯定不是(顺便说一句,如果您不过是在向下箭头上方,则可以看到拒绝投票的原因:没有研究工作/不清楚/没有用)
Anthon

@Anthon,您认为在哪里提出这个问题?我不知道,所以我认为这里比SuperUser更好。并且您认为我应该在适当的位置提出问题之前删除上一个问题和这个问题,以防止再次由于交叉发布而被否决吗?
Juergen

交叉发布从来都不行,因为您会阅读该帮助。在此站点上,这是一个关闭的原因(如您所注意到的),还需要一定的耐心,这是一个问答站点,而不是一些个人或即时帮助站点。等待几天,尤其是在周末,将是适当的。对您尝试过的内容和不起作用的内容进行更多描述也将是适当的。如果要在此处重新打开,请删除超级用户上的Q,在此处明确指出(通过编辑帖子),然后它将在重新打开的队列中。
Anthon

@Anthon,谢谢您的评论。删除了有关SuperUser的问题,并在此处更详细地解释了该问题。我可以做得更好吗?
Juergen

看起来更好,我投票决定重新开放,但是请注意,这不仅需要我投票。
Anthon

Answers:



0

Grub似乎支持使用分离的签名的签名验证。我怀疑那是你的答案。


这不能为问题提供答案。要批评或要求作者澄清,请在其帖子下方发表评论。- 评分
Archemar

实际上,确实如此。最初的问题是:“那么我如何在使用initrd和grub进行引导之前,先使用sha256散列来验证它们?该验证可能发生在垫片,grub或我可能会使用的其他工具中。或代替垫片和/或g头。” 答案是:“ Grub似乎支持使用分离的签名进行签名验证。” (简单地说:“ ...因此您可以在initrd上签名,生成分离的签名,并让Grub对其进行验证。”)
贾斯汀·金-拉克鲁瓦

@Justin King-Lacroix,谢谢您的回答,但是我在gnu.org/software/grub/manual/grub.html中找不到分离的签名-这是非官方的grub fork的功能吗?谷歌搜索“分离签名grub手册”没有返回任何特定内容。您能指出我该功能吗?

不幸的是,我没有手册。我从源头上发现了这一点。查找“验证”操作。
贾斯汀·金-拉克鲁瓦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.