首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启用和配置安全启动在Ubuntu中不提供额外的安全好处吗?

启用和配置安全启动在Ubuntu中不提供额外的安全好处吗?
EN

Ask Ubuntu用户
提问于 2017-10-01 23:05:21
回答 3查看 1K关注 0票数 4

下面的文章来自英国国家网络安全中心的网站是真的吗?

虽然安全引导硬件可以验证引导链的第一步,但是Ubuntu不会继续验证引导系统,因此启用和配置安全引导不会带来额外的安全好处。

EN

回答 3

Ask Ubuntu用户

发布于 2017-10-01 23:24:48

这确实是事实。在Windows上,安全引导可以提供NCSC指出的额外福利

早期发布的反恶意软件( ELAM )驱动程序提供了对ELAM兼容系统上已知的坏驱动程序的签名检查,这些驱动程序配置为使用安全引导。..。Windows 10安全启动进程(在支持和正确配置的硬件上)在试图破坏安全控制时提醒用户。重要的是用户知道如何识别和响应此警报。

据我所知,在Ubuntu上,这两个特性都不可用。

票数 0
EN

Ask Ubuntu用户

发布于 2017-10-01 23:29:12

的确,UEFI上的安全引导只检查签名的引导固件(放置在用于运行引导加载程序的FAT32分区上的文件),但似乎也可以对签名的驱动程序进行检查,但我从未听说过在Ubuntu中签名的驱动程序,而微软系统是这样做的。文件系统的其余部分不能确定地签名。

这里有一些信息

编辑:我在Ubuntu存储库中创建了linux签名包,这意味着驱动程序也会被签名。

票数 0
EN

Ask Ubuntu用户

发布于 2017-10-10 13:59:52

Ubuntu的安全引导支持随着时间的推移而改变,您提供的引用已经过时了。一般说来,有几个阶段可能会进行验证:

  1. 引导加载程序的验证--这是安全引导本身所做的限制。安全引导防止UEFI启动未签名(或签名不当)二进制文件,这基本上就是它。在EFI下,引导加载程序是EFI二进制文件,因此如果没有签名,安全启动将阻止它们启动。但是,引导加载程序被设计为启动内核,而内核不是EFI二进制文件,因此,如果引导加载程序被设计为允许启动,那么安全引导本身就不能阻止未签名内核的启动。(但也有一些与技术细节有关的警告和例外。)因此,在这个级别上,安全引导可以防止引导加载程序被破坏,但它不能阻止软件堆栈的后续部分被破坏。
  2. 验证内核--为了进一步提高安全性,应该对内核进行验证。我最近听到的消息(也是在两三年前),股票GRUB没有以任何方式验证内核。因此,如果您要使用股票GRUB,它将很高兴地启动任何您提供给它的内核。Ubuntu至少在12.04版本中使用了以这种方式工作的GRUB。需要签名内核的修改GRUB二进制文件是可用的,许多发行版都使用这些二进制文件。我不记得Ubuntu14.04‘S GRUB是否需要一个签名的内核。Ubuntu16.04‘S GRUB绝对需要一个签名的内核,至少它的默认配置是这样的。另外,由于至少12.04版本,Ubuntu提供了使用安全启动键签名的内核,因此可以通过引导加载程序启动这些内核来进行验证。因此,通过交换股票GRUB,甚至Ubuntu12.04也可以配置为需要一个签名的内核。
  3. 内核模块的验证-- Linux内核可以加载内核模块,如果一个内核被签名但加载了恶意软件的内核模块,主内核的有符号状态是没有意义的。虽然我不能100%确定Ubuntu14.04是否需要一个签名的内核,但我有理由相信Ubuntu14.04不需要签名的内核模块。Ubuntu 16.04改变了这种情况。这一变化给那些想要使用第三方专有驱动程序的人带来了不便,比如用于VirtualBox的驱动程序,对于ATI/AMD或Nvidia芯片的视频驱动程序。这些驱动模块不是由规范签名的,这需要添加一个机器所有者密钥(MOK)和自签名模块,如果要保持安全启动,就必须添加一个机器所有者密钥(MOK)和自签名。
  4. 用户空间二进制文件的验证--一旦内核加载了,它就会启动用户空间二进制文件--从bash到网络浏览器和字处理器的所有东西。原则上,内核可以要求对这些二进制文件进行签名。实际上,我不知道Linux中是否支持这样的签名要求。这样的要求将是相当繁重的,特别是对于软件开发人员或任何想要从第三方运行二进制文件的人来说。

除了这四个主要的(潜在)验证级别之外,还有几个曲折,介于级别之间、异常等等。例如,内核可以包括EFI存根加载器,它将内核转换为自己的引导加载程序,从而模糊了步骤1和步骤2之间的界限。我还看到了一些内核,如果它们是从不执行安全引导验证的引导加载程序启动的,则拒绝启动,这就改变了步骤2的要求。原则上,在引导加载程序之外的验证可以使用安全引导键以外的机制。实际上,在Linux世界中,安全启动键是通过步骤3使用的;然而,我的理解是内核提供了自己的代码来验证内核模块(步骤3),所以在技术上UEFI中的安全启动代码没有涉及到步骤2。(不过,我从未深入研究过这一点,因此我可能对这个细节弄错了。)

另外,我在上面的描述中重点关注了LTS发行版。一些安全更改可能是在临时(非LTS)版本中引入的;我不记得细节了。

如前所述,随着时间的推移,Ubuntu一直在增加其验证需求的水平。您提供的引用对于Ubuntu12.04来说是准确的,可能是14.04,但不是16.04 --至少在固件中启用了安全引导的默认配置下是这样的。(当然,您可以将Ubuntu的GRUB替换为一个旧版本或另一个根本没有安全启动验证的引导加载程序。)对于某些应用程序,更精细的细节,比如验证代码的代码评审,可能很重要。如果你是在一个高度安全的环境中工作(比如银行、国防承包商、某些政府机构等),你肯定应该依靠你自己的雇主的安全部门、安全承包商等等,而不是从网络论坛上随机的陌生人那里得到建议。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/961166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档