ノート:

OCI Compute保護インスタンスでのセキュア・ブート機能の検証

イントロダクション

セキュア・ブートは、認可されていないブート・ローダーやオペレーティング・システムのブートを阻止するUnified Extensible Firmware Interface (UEFI)の機能です。セキュア・ブートでは、ブート前に署名されたファームウェアの署名が正しいことを検証して、オペレーティング・システムのロード前にルートキット、ブートキット、および未承認ソフトウェアが実行されないようにします。正しく署名されていないブートコンポーネントは実行できず、システムのブートが妨げられます。このチュートリアルでは、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 Help Centerを参照してください。