有没有办法在Linux中启用安全启动?


8

就像Windows具有安全启动功能,可以阻止任何外部OS Loader代码在启动时运行一样,Linux本身是否具有类似的选择?我环顾四周,但是当我搜索时,唯一得到的结果就是如何在启用UEFI的Windows计算机上安装Linux。我找不到如何将此选项带到我的Linux机器上。


搜索关键字:“ trusted grub”
Gilles'SO-别成为邪恶

可以安装shim由Microsoft签署的引导加载程序,请参见例如wiki.debian.org/SecureBoot
phk

@Gilles是Trustedgrub软件值得信赖的吗?下载会改变我的启动过程的文件令人生畏。
罗汉

@Rohan Trusted Grub与任何其他基本Linux软件一样可信赖。它与Linux的TPM软件堆栈TrouSers由同一个人维护。
吉尔斯(Gilles)'所以别再邪恶了'

Answers:


3

为使安全启动起作用,您的硬件应支持安全启动,而操作系统应支持安全启动。

对于硬件,您可以签入UEFI设置菜单,并且需要添加操作系统提供的证书/密钥

对于OS,您可以通过以下命令检查支持:

[root@secureboot-guest ~]# cat /sys/kernel/security/securelevel 

如果以上命令的输出为“ 1”,则操作系统将支持并启用安全启动。


没有这样的文件...
Rohan

@Rohan,您的内核可能未通过安全启动支持进行编译。检查以下输出:[root @ secureboot-guest〜]#cat / boot / config-uname -r | grep SECURE如果内核中存在安全启动支持,则您将获得如下输出:CONFIG_EFI_SECURE_BOOT_SECURELEVEL = y CONFIG_SECURITY_SECURELEVEL = y
shubham

-r根据我的终端,这对cat是无效的选项。
罗汉

哦,实际上是linux命令。这是命令:cat / boot / config- uname -r 将uname -r放入两端`
shubham

2

首先:生成自己的密钥

openssl req-新-节点-utf8 -sha256-天36500-批次-x509 \
       -subj“ / CN =内核密钥” -outform DER -out kernel.der \
       -keyout kernel.key

尝试使用CONFIG_EFI_STUB编译linux内核并将initramfs嵌入其中,如下所述:https ://prosauce.org/blog/2015/10/31/booting-linux-securely,使用以下脚本对模块进行签名:

/ usr / src / linux-headers-$(uname -r)/ scripts / sign-file sha256 kernel.key kernel.der module.ko

然后为您的笔记本电脑\工作站创建带有内核cmdline的文件,并创建一个映像并将其复制到efi引导目录,如下所示:

#objcopy \
  --add-section .osrel = / etc / os-release --change-section-vma .osrel = 0x20000 \
  --add-section .cmdline = / tmp / cmdline --change-section-vma .cmdline = 0x30000 \
  --add-section .linux = / boot / vmlinuz --change-section-vma .linux = 0x2000000 \
  --add-section .initrd = / boot / initrd.img --change-section-vma .initrd = 0x3000000 \
/usr/lib/systemd/boot/efi/linuxx64.efi.stub linux.efi

#mkdir -p / boot / efi / EFI / BOOT

#sbsign --key /root/keys/ISK.key --cert /root/keys/ISK.pem --output /boot/efi/EFI/BOOT/BOOTX64.EFI linux.efi / boot / efi / EFI / BOOT /BOOTX64.EFI

要将自己的密钥安装到MB固件中,您可以执行以下cmd:

openssl x509 -inform der -in kernel.der -outform pem -out kernel.pem
cert-to-efi-sig-list -g“ $(uuidgen)” kernel.pem kernel.esl
sign-efi-sig-list -k KEK.key -c KEK.pem内核kernel.esl kernel.auth

-1

AFAIK安全启动是UEFI功能,由Microsoft和其他组成UEFI联盟的公司开发。

UEFI部分是由硬件强制执行的,即您的主板配置可能会/可能不会。如果您使用完整的UEFI,则很有可能可以从UEFI菜单本身启用安全启动。

但是,如果您的固件是带有CSM / BIOS的UEFI,那么您可能会遇到某些障碍,例如启用安全启动的选项会变灰


2
它不是微软的产品,这是一个标准的微软可能不得不在其创作了很多的说:en.wikipedia.org/wiki/...
PHK

@phk相应地更新了答案
sohom154 '16
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.