附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
驗證 OCI Compute 受保護執行處理上的安全開機功能
簡介
安全啟動是一種統一可延伸韌體介面 (UEFI) 功能,會讓未經授權的啟動載入器與作業系統無法啟動。安全啟動會先驗證已簽署韌體的簽章正確,再啟動以防止 rootkit、bootkit 以及未經授權的軟體在作業系統載入之前執行。不正確簽署的啟動元件無法執行,因此無法啟動系統。本教學課程將引導您完成驗證 Oracle Cloud Infrastructure (OCI) Compute 受保護執行處理上安全開機功能的作業。
目標
-
確認 OCI Compute 受保護執行處理上的安全開機狀態。
-
建立並嘗試載入未簽署的核心模組。
-
瞭解安全開機如何在未簽署的模組上強制實施限制。
必要條件
-
具備建立及管理執行處理權限的 OCI 帳戶。
-
Oracle Linux 命令和核心模組的基本知識。
-
執行 Oracle Linux 8 的受保護 OCI Compute 執行處理。若要建立受保護執行處理,並檢視支援的資源配置和平台映像檔以啟用受保護執行處理,請參閱受保護執行處理。
作業 1:驗證受保護執行處理中的安全開機狀態
執行下列指令以檢查安全啟動狀態。
sudo mokutil --sb-state
您會看到已啟用安全啟動。
SecureBoot enabled
作業 2:在受保護執行處理中設定環境
-
建立核心模組的目錄。
mkdir ~/secureboot cd ~/secureboot
-
使用下列內容建立名為
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");
-
使用下列內容建立名為
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 版本不相符的錯誤,請使用下列步驟來解決。
-
安裝 GCC 工具集。
sudo yum install gcc-toolset-11
-
啟用 GCC 工具集。
scl enable gcc-toolset-11 bash
作業 4:載入未簽署的核心模組
-
執行下列命令以載入核心模組。
sudo insmod unauthorised_module.ko
如果已啟用安全啟動且功能正確,您應該會看到以下錯誤:
insmod: ERROR: could not insert module test_module.ko: Key was rejected by service
-
檢查核心訊息是否安全啟動強制實行。
(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 執行處理的安全功能和測試方法。
確認
- 作者 - Vishak Chittuvalapil (雲端資深工程師)
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Verify Secure Boot Feature on OCI Compute Shielded Instances
G12348-01
August 2024