附註:

驗證 OCI Compute 受保護執行處理上的安全開機功能

簡介

安全啟動是一種統一可延伸韌體介面 (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: 底下的行是以 Tab 字元縮排,而不是空格。

作業 3:建置核心模組

執行下列命令以安裝 GCC 工具集。

make

這樣會編譯 unauthorised_module.c 檔案並產生 unauthorised_module.ko

(選擇性) 處理編譯器相容性問題:

如果您遇到 GCC Toolset 版本不相符的錯誤,請使用下列步驟來解決。

  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 Help Center