![有没有办法在 Linux 中启用安全启动?](https://linux22.com/image/85730/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%9C%A8%20Linux%20%E4%B8%AD%E5%90%AF%E7%94%A8%E5%AE%89%E5%85%A8%E5%90%AF%E5%8A%A8%EF%BC%9F.png)
就像 Windows 具有安全启动功能,可防止任何外部 OS Loader 代码在启动时运行一样,Linux 本身也有类似的选项吗?我环顾四周,但当我搜索时,我得到的唯一结果是如何在支持 UEFI 的 Windows 计算机上安装 Linux。我找不到如何将此选项带到我的 Linux 机器上。
答案1
首先:生成自己的密钥
openssl req -new -nodes -utf8 -sha256 -days 36500 -batch -x509 \ -subj "/CN=内核密钥" -outform DER -out kernel.der \ -keyout 内核.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
然后使用内核命令行为您的笔记本电脑\工作站创建文件,并创建一个映像并将其复制到 efi boot 目录,如下所示:
# 对象复制 \ --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 固件中,您可以执行如下命令:
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
答案2
为了使安全启动正常工作,您的硬件应支持安全启动,并且您的操作系统应支持安全启动。
对于硬件,您可以检查UEFI设置菜单,并且需要添加操作系统提供的证书/密钥
对于操作系统,您可以通过以下命令检查支持:
[root@secureboot-guest ~]# cat /sys/kernel/security/securelevel
如果上述命令的输出为“1”,则您的操作系统支持并启用安全启动。
如果此文件不存在,您需要检查您的内核是否编译有安全启动支持:
$ egrep "CONFIG_EFI_SECURE_BOOT_SECURELEVEL|CONFIG_SECURITY_SECURELEVEL" /boot/config-$(uname -r)
CONFIG_EFI_SECURE_BOOT_SECURELEVEL=y
CONFIG_SECURITY_SECURELEVEL=y
答案3
AFAIK 安全启动是一项 UEFI 功能,由 Microsoft 和组成 UEFI 联盟的其他一些公司开发。
UEFI 部分是由硬件强制执行的,即您的主板配置可能会/可能不会妨碍。如果您使用完整的 UEFI,那么您很可能能够从 UEFI 菜单本身启用安全启动。
但是,如果您的固件是带有 CSM/BIOS 的 UEFI,那么您可能会遇到某些障碍,例如启用安全启动的选项变灰和所有。