Go to main content

Oracle® Solaris 11.4 でのシステムおよび接続されたデバイスのセキュリティー保護

印刷ビューの終了

更新: 2018 年 8 月
 
 

ベリファイドブートの使用

悪質のあるプログラムは、サードパーティーに情報を渡したり、Oracle Solaris の動作を変更したりする可能性があります。一般に、サードパーティーモジュールに悪意がなくても、サイトの変更を制御するポリシーに違反している可能性があります。したがって、このようなモジュールが承認なしでインストールされることからシステムを保護する必要もあります。

    Oracle Solaris のベリファイドブートによって、システムのブートプロセスがセキュリティー保護されます。この機能は有効にする必要があり、それによってシステムは次のような脅威から保護されます。

  • カーネルモジュールの破損

  • 正当なカーネルモジュールになりすました悪意のあるプログラム (トロイの木馬ウイルス、スパイウェア、ルートキットなど) の挿入または置換

  • 未承認のサードパーティーカーネルモジュールのインストール

ベリファイドブートを使用するには、ファームウェアのアップグレードが必要になる場合があります。詳細は、ベリファイドブートのためのファームウェアアップグレードを参照してください。

SPARC: ベリファイドブートのためのファームウェアアップグレード

SPARC ファームウェアは工場でインストールされます。一部の SPARC プラットフォームで、拡張ブートブロックにはベリファイドブート機能との互換性がありません。ベリファイドブートのレベルが enforce に設定されている場合、システムはブートせず、次のようなメッセージが表示されます。

WARNING: Total size of bootblk fcode greater than expected
FATAL: Bootblk fcode extraction failed
Missing cmn-xxx[ caused cmn-append with 'verified boot policy = 
enforce, halting boot' argument to fail

ベリファイドブートのレベルが warning に設定されている場合は、次のようなメッセージが表示されます。

WARNING: Bootblk fcode extraction failed
WARNING: Signature verification of boot-archive bootblk failed

    ベリファイドブートが有効になっている SPARC システムでは、次のようにファームウェアを更新してください。

  • T5 シリーズ、M5 シリーズ、および M6 シリーズ – ファームウェア 9.6.5 以降にアップグレードします。

  • T7 シリーズおよび M7 シリーズ – ファームウェア 9.7.1 以降にアップグレードします。

  • Fujitsu M10 – XCP 2320 以降にアップグレードします。

ファームウェアを更新するには、 fwupdate (1M) のマニュアルページを参照してください。

ベリファイドブートと ELF 署名

Oracle Solaris では、ブート検証は elfsign の署名または鍵を使用して実行されます。Oracle Solaris カーネルモジュールは、工場でこれらの鍵を使用して署名されます。ファイル形式から、これらのモジュールは ELF オブジェクトとも呼ばれます。署名は、オブジェクトファイルで選択した ELF レコードの SHA-256 チェックサムを使用して作成されます。SHA-256 チェックサムは、RSA-2048 の非公開鍵と公開鍵のペアを使用して署名されます。公開鍵は /etc/certs/elfsign ディレクトリで配布されていますが、非公開鍵は配布されていません。

すべての鍵は、システムのブート前環境に格納されています。これは、Oracle Solaris をブートする前に実行されるソフトウェアまたはファームウェアです。このファームウェアは、platform/.../unix をロードおよびブートします。

    ブート前環境は、次のように SPARC システムのカテゴリごとに異なります。

  • Oracle Integrated Lights Out Manager (ILOM) のベリファイドブートがサポートされている SPARC システム - 鍵および構成設定は ILOM に格納されます。

    Oracle ILOM はオペレーティングシステムのファイルシステム外部にあるため、ベリファイドブートの構成は、オペレーティングシステムのユーザー (管理者 (root) 特権を持つユーザーを含む) による改ざんから保護されます。したがって、このシステムカテゴリでは、ベリファイドブートがよりセキュアです。

    ベリファイドブートの構成が承認なしで変更されることを回避するには、ILOM へのアクセスがセキュアであることを確認する必要があります。ILOM のセキュリティー保護の詳細は、「システム管理および診断 (http://www.oracle.com/goto/ilom/docs)」にあるドキュメントを参照してください。

  • SPARC M5 シリーズ、SPARC M6 シリーズ、および SPARC T5 シリーズ - 構成設定はシステムの ILOM に格納されます。SPARC ファームウェアが構成情報を Oracle Solaris に送信します。

  • Fujitsu SPARC M12 および Fujitsu M10 システム - 構成設定は、システムの XSCF に格納されます。Fujitsu SPARC M12 および Fujitsu M10 XSCF ファームウェアは、ベリファイドブートや証明書の有効化に関するポリシーなどの構成情報を Oracle Solaris に送信します。OpenBoot (OBP) は、Oracle Solaris システムをブートする前にこの構成情報を読み取ります。

    Fujitsu SPARC M12 システムのすべての XCP ファームウェアはベリファイドブートをサポートしています。ベリファイドブートの構成の詳細は、次のガイドを参照してください。

    • Fujitsu SPARC M12 および M10/SPARC M10 システム運用・管理ガイド

    • Fujitsu M10/SPARC M10 システム プロダクトノート – Fujitsu M10 システムのベリファイドブートをサポートする XCP ファームウェアバージョン向け

システムブート時の検証シーケンス

ベリファイドブートによって、Oracle Solaris カーネルモジュールの elfsign 署名の検証が自動化されます。管理者はベリファイドブートを使用することで、システムのリセットからブートプロセスの完了までのブートプロセスに、検証可能な信頼チェーンを作成できます。

システムのブート中に、ブートプロセスで開始されたコードの各ブロックで、次にロードする必要があるブロックが検証されます。検証およびロードのシーケンスは、最後のカーネルモジュールがロードされるまで続行されます。

あとでシステムで電源の再投入が実行されるときに、新しい検証シーケンスが開始されます。管理者は、検証に失敗したときに適切なアクションが行われるように、ベリファイドブートを構成することもできます。

SPARC システムでの Oracle Solaris のブートフローを次に示します。

Firmware -> Bootblock -> /platform/.../unix -> genunix -> other kernel modules

このファームウェアは、初期の Oracle Solaris モジュールである Oracle Solaris の /platform/.../unix モジュールを検証してから、ロードします。同様に、unix モジュールの一部である Oracle Solaris カーネルの実行時ローダー krtld は、汎用の UNIX (genunix) モジュールおよび後続のモジュールを検証し、ロードします。

ベリファイドブートのポリシー

このリリースでは、ベリファイドブートには boot_policy という 1 つのポリシープロパティーしかありません。boot_policy プロパティーは、ブートプロセス中にカーネルモジュールをロードするときにベリファイドブート動作を管理します。

レガシー SPARC システムおよび x86 システム上では、boot_policy プロパティーは /etc/system ファイル内に定義されています。Oracle ILOM のベリファイドブートがサポートされている SPARC システムでは、boot_policy/HOSTn/verified_boot 内にある ILOM のプロパティーで、ここで n は物理ドメイン (PDomain) 番号です。

    boot_policy プロパティーは、次の値のいずれかを使用して構成できます。

  • none – ブート検証が実行されません。これはデフォルトです。

  • warning – モジュールがロードされる前に、各カーネルモジュールの elfsign 署名が検証されます。モジュールの検証に失敗した場合でも、モジュールはロードされます。不一致は、システムコンソールまたはシステムログ (使用可能な場合) に記録されます。デフォルトのログは /var/adm/messages です。

  • enforce – モジュールがロードされる前に、各カーネルモジュールの elfsign 署名が検証されます。モジュールの検証に失敗した場合は、モジュールがロードされません。不一致は、システムコンソールまたはシステムログ (使用可能な場合) に記録されます。デフォルトのログは /var/adm/messages です。


注 -  デフォルトでは、3.4 より前の Oracle VM Server for SPARC のバージョンで作成された論理ドメインは boot-policy=warning を設定します。カーネルモジュールが署名されていないか破損している場合、この設定ではサーバーの更新後のドメインのブート時に、警告メッセージが発行されます。

ベリファイドブートの公開鍵証明書

    ベリファイドブートは、次のソースにある公開鍵証明書を使用します。

  • /etc/certs/elfsign ディレクトリ

    イメージにサードパーティーベンダーによって署名された ELF オブジェクトが含まれている場合は、このディレクトリにベンダーの証明書を追加する必要があります。

  • zoneadm コマンドによって追加されたカーネルゾーン

  • x86 の UEFI セキュアブート (BIOS メニュー)

  • SPARC の Oracle ILOM

    ベリファイドブートをサポートしている SPARC の Oracle ILOM では、事前にインストールされたベリファイドブートの証明書ファイル /etc/certs/elfsign/ORCLS11SE が提供されています。証明書には、Oracle Solaris で署名された ELF オブジェクトの elfsign 署名を検証する際に使用される RSA 公開鍵が含まれています。すべての証明書は個別の PDomain にロードされ、管理されます。

  • ILOM の構文は、ハードウェアプラットフォームおよびファームウェアバージョンによって異なります。Oracle ILOM を使用して証明書を構成するには、Oracle® ILOM 構成および保守用管理者ガイドファームウェア Release 3.2.xのSPARC 検証済みブートプロパティーの構成を確認してください。

カーネルモジュールの署名を手動で検証することもできます。手動での検証は、診断時に正しい署名が存在していることを確認するために役立ちます。

使用例 1  カーネルモジュールの署名の手動検証

次のように、elfsign verify -v kernel_module コマンド構文を使用します。

$ elfsign verify -v /kernel/misc/sparcv9/bignum
elfsign: verification of /kernel/misc/sparcv9/bignum passed.
Elfsign signature format: rsa_sha256
Signer: O=Oracle Corporation, OU=Corporate Object Signing, OU=Solaris Signed Execution, CN=Solaris 11