注意:

验证 OCI 计算受防护实例上的安全引导功能

简介

安全引导是统一可扩展固件接口 (Extensible Firmware Interface,UEFI) 功能,用于防止未授权的引导加载程序和操作系统引导。在引导之前,安全引导将验证已签名固件的签名是否正确,以防止在加载操作系统之前运行 rootkit、bootkit 和未经授权的软件。不允许运行未正确签名的引导组件,从而阻止系统引导。本教程将指导您完成在 Oracle Cloud Infrastructure (OCI) Compute 受保护实例上验证安全引导功能的任务。

目标

先决条件

任务 1:验证受防护实例中的安全引导状态

运行以下命令以检查安全引导状态。

sudo mokutil --sb-state

您可以看到安全引导已启用。

SecureBoot enabled

任务 2:在受防护实例中设置环境

  1. 为内核模块创建目录。

    mkdir ~/secureboot
    cd ~/secureboot
    
  2. 使用以下内容创建名为 unauthorised_module.c 的内核模块源文件。

    #include <linux/module.h>
    #include <linux/kernel.h>
    
    static int __init unauthorised_module_init(void) {
        printk(KERN_INFO "Unauthorised module loaded\n");
        return 0;
    }
    
    static void __exit unauthorised_module_exit(void) {
        printk(KERN_INFO "Unauthorised module unloaded\n");
    }
    
    module_init(unauthorised_module_init);
    module_exit(unauthorised_module_exit);
    
    MODULE_LICENSE("GPL");
    MODULE_DESCRIPTION("Unauthorised module");
    MODULE_AUTHOR("Vishak");
    
  3. 使用以下内容创建名为 Makefile 的 Makefile。

    obj-m += unauthorised_module.o
    
    all:
            make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
    
    clean:
            make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
    

    注:请确保 all:clean: 下的行以制表符缩进,而不是以空格缩进。

任务 3:构建内核模块

运行以下命令以安装 GCC 工具集。

make

这将编译 unauthorised_module.c 文件并生成 unauthorised_module.ko

(可选)处理编译器兼容性问题:

如果遇到 GCC 工具集版本不匹配错误,请使用以下步骤解决。

  1. 安装 GCC 工具集。

    sudo yum install gcc-toolset-11
    
  2. 启用 GCC 工具集。

    scl enable gcc-toolset-11 bash
    

任务 4:装入未签名的内核模块

  1. 运行以下命令以装入内核模块。

    sudo insmod unauthorised_module.ko
    

    如果安全引导已启用且正常运行,您应该会看到以下错误。

    insmod: ERROR: could not insert module test_module.ko: Key was rejected by service
    
  2. 检查内核消息以实现安全引导。

    (dmesg -T | grep -i "secure boot"; dmesg -T | tail -5) | less
    

    查找指示安全引导阻止装入模块的消息。

    [Wed Jul 10 14:00:41 2024] secureboot: Secure boot enabled
    [Wed Jul 10 14:00:41 2024] Kernel is locked down from EFI Secure Boot mode; see man kernel_lockdown.7
    [Wed Jul 24 14:34:51 2024] Loading of unsigned module is rejected
    

后续步骤

在本教程中,我们通过尝试加载未签名的内核模块并观察系统响应,成功验证了 Oracle Linux 屏蔽实例上安全引导的功能。这可以确认安全引导处于活动状态并按预期运行,从而增强云环境的安全性。安全引导的优点是,它确保仅在引导过程中加载可信和签名的软件,保护您的实例免受恶意或未经授权的代码,从而保持系统的完整性。

在本系列的下一个教程中,我们将探讨 OCI 实例的其他安全功能和测试方法。

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心