Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
コンテンツコンテンツ
管理ガイド
  1. このガイドについて
  2. I サポートと共通タスク
    1. 1 YaSTオンラインアップデート
    2. 2 サポート用システム情報の収集
    3. 3 テキストモードのYaST
    4. 4 Snapperによるスナップショットとロールバック
    5. 5 VNCによるリモートアクセス
    6. 6 コマンドラインツールによるソフトウェアの管理
    7. 7 BashとBashスクリプト
    8. 8 Using Third-Party Software
  3. II システム
    1. 9 64ビットシステム環境での32ビットと64ビットのアプリケーション
    2. 10 Linuxシステムのブートと設定
    3. 11 ブートローダGRUB
    4. 12 UEFI (Unified Extensible Firmware Interface)
    5. 13 特別なシステム機能
    6. 14 プリンタの運用
    7. 15 udevによる動的カーネルデバイス管理
    8. 16 X Windowシステム
    9. 17 FUSEによるファイルシステムへのアクセス
  4. III モバイルコンピュータ
    1. 18 Linuxでのモバイルコンピューティング
    2. 19 無線LAN
    3. 20 電源管理
    4. 21 タブレットPCの使用
  5. IV サービス
    1. 22 ネットワークの基礎
    2. 23 ネットワーク上のSLPサービス
    3. 24 NTPによる時刻の同期
    4. 25 ドメインネームシステム
    5. 26 DHCP
    6. 27 NetworkManagerの使用
    7. 28 Samba
    8. 29 NFS共有ファイルシステム
    9. 30 ファイルの同期
    10. 31 Apache HTTPサーバ
    11. 32 YaSTを使用したFTPサーバの設定
    12. 33 Squidプロキシサーバ
    13. 34 SFCBを使用したWebベースの企業管理
  6. V トラブルシューティング
    1. 35 ヘルプとドキュメント
    2. 36 最も頻繁に起こる問題およびその解決方法
  7. A サンプルネットワーク
  8. B GNU Licenses
ナビゲーション
適用先 SUSE Linux Enterprise Server 11 SP4

12 UEFI (Unified Extensible Firmware Interface)

UEFI (Unified Extensible Firmware Interface) は、システムハードウェアに付属のファームウェア、システムのすべてのハードウェアコンポーネント、およびオペレーティングシステムの間のインタフェースです。

UEFIは、従来のPC-BIOSに代わって、PCで幅広く利用されるようになっています。例えば、UEFIは64ビットシステムを適切にサポートし、最も重要な機能の1つである安全なブート(セキュアブート、ファームウェアバージョン2.3.1c以降が必要)を提供します。最後に、UEFIを使用すると、すべてのx86プラットフォームで標準のファームウェアが利用可能になります。

さらに、UEFIには以下の利点があります。

  • GUIDパーティションテーブル(GPT)を使う大きなディスク(2 TiB以上)からのブート。

  • CPUに依存しないアーキテクチャおよびドライバ。

  • ネットワーク機能を持つ柔軟なプレOS環境。

  • PC-BIOSライクなエミュレーション経由でレガシーオペレーティングシステムのブートをサポートするCSM(Compatibiity Support Module)。

詳細については、http://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interfaceを参照してください。以降のセクションは、UEFIの一般的な概要を示すものではなく、特定の機能がSUSE Linux Enterpriseにどのように実装されているかを示すヒントです。

12.1 セキュアブート

UEFIの世界では、ブートストラッププロセスの保護とは、信頼チェーンの確立を意味します。SUSE Linux Enterpriseとの関連では、プラットフォームはこの信頼チェーンのルートであり、マザーボードおよびオンボードファームウェアがプラットフォームとみなされます。また、別の言い方をすれば、ハードウェアベンダー、およびそのハードウェアベンダーからコンポーネントの製造元やOSベンダーなどにつながる信頼チェーンです。

信頼は公開鍵の暗号で表されます。ハードウェアベンダーは、ファームウェアにいわゆるプラットフォームキー(PK)を設定し、信頼のルートを表します。オペレーティングシステムベンダーなどとの信頼関係は、このプラットフォームキーを使ってキーに署名することによって文書化されます。

最後に、これらの「信頼された」キーのいずれかで署名されていない限りファームウェアがコード(OSブートローダも、PCI Expressカードやディスクのフラッシュメモリに保存されたドライバも、ファームウェアのアップデートも)を実行できないようにすることによって、セキュリティが確立されます。

基本的に、セキュアブートを使用するには、ファームウェアによって信頼されたキーで署名されたOSローダが必要であり、読み込むカーネルが信頼できることを検証するためにOSローダが必要です。

キー交換キー(KEK)をUEFIキーデータベースに追加できます。この方法で、PKのプライベート部分で署名されている限り、他の証明書を使用できます。

12.1.1 SUSE Linux Enterpriseへの実装

Microsoftのキー交換キー(KEK)がデフォルトでインストールされます。

注記
注記: GUIDパーティションテーブル(GPT)が必要

セキュアブート機能を使用するには、マスタブートレコード(MBR)を使用した古いパーティションをGUIDパーティションテーブル(GPT)に置換する必要があります。

YaSTは、インストール時にEFIモードを検出すると、GPTパーティションの作成を試みます。UEFIでは、FATフォーマットのEFIシステムパーティション(ESP)上でEFIプログラムが見つかるものと想定されます。

UEFIセキュアブートに対応するには、基本的に、ブートローダがデジタル署名されており、ファームウェアがそのデジタル署名を信頼されたキーとして認識することが必要です。SUSE Linux Enterpriseのお客様の利便性を考え、このキーはファームウェアによってあらかじめ信頼されているので、手動での操作は不要です。

これには2つの方法があります。1つは、ハードウェアベンダーにSUSEキーを署名してもらい、SUSEがその署名を使ってブートローダに署名する方法です。もう1つは、MicrosoftのWindows Logo Certificationプログラムを利用してブートローダの認定を受け、MicrosoftにSUSE署名キーを認識してもらう(つまり、MicrosoftのKEKを使って署名してもらう)方法です。これで、SUSEは、UEFI署名サービス(この場合はMicrosoft)によって署名されたローダを入手できます。

UEFIのセキュアブートプロセス
図 12.1: UEFIのセキュアブートプロセス

実装階層においてSUSEはshimローダを使用します。これは法的問題を回避するスマートなソリューションで、証明書および署名の手順が大幅に簡素化されます。shimローダの処理は、ELILOやGRUB 2などのブートローダをロードすることです。次にこのブートローダが、SUSEキーのみで署名されたカーネルをロードします。SUSEは、UEFIセキュアブートが有効化されたSLE11 SP3の新規インストールで、この機能を提供します。

信頼ユーザには2種類あります。

  • 1つ目は、キーを保持するユーザです。プラットフォームキー(PK)によって、ほとんどすべてのことが許可されます。キー交換キー(KEK)では、PKの変更を除き、PKに可能なすべてのことが許可されます。

  • 2つ目は、マシンに物理的にアクセスできる任意のユーザです。物理的にアクセスできるユーザは、マシンを再起動したりUEFIを設定したりできます。

UEFIには、これらのユーザのニーズを満たすため、2種類の変数があります。

  • 1つ目は認証変数と呼ばれるもので、ブートプロセス(いわゆるブートサービス環境)および実行中のOSの両方から更新できますが、更新できるのは、古い変数値の署名に使用されたものと同じキーを使って新しい変数値が署名されている場合のみです。また、この変数は、より大きなシリアル番号を持つ値にのみ追加または変更できます。

  • 2つ目は、ブートサービス専用変数と呼ばれるものです。この変数は、ブートプロセス中に動作する任意のコードにアクセスできます。ブートプロセスの終了後、OSが起動する前に、ブートローダはExitBootServicesコールを呼び出す必要があります。その後、これらの変数にはアクセスできなくなり、OSはこれらに触れられません。

さまざまなUEFIキーリストは1つ目のタイプなので、オンラインでの更新、追加、および、キー/ドライバ/ファームウェアの指紋のブラックリスト登録ができます。セキュアブートの実装に役立つのは、2つ目のBoot Service Only Variable(ブートサービス専用変数)です。これは、安全かつオープンソースで使いやすくなっており、GPL v3と互換性があるためです。

SUSEは、最初にFedoraによった開発されたshim (小さくシンプルなEFIブートローダ)で起動します。システム上のUEFIキーデータベースで利用可能なKEKにもとづいて、SUSE KEKで署名された証明書およびMicrosoft発行の証明書によって署名されます。

これによってshimのロードおよび実行が可能になります。

shimは、続いて、ロードしようとしているブートローダが信頼されていることを確認します。デフォルトで、shimは、本体に組み込まれている独自のSUSE証明書を使用します。また、shimは、追加のキーを登録してデフォルトのSUSEキーを上書きできます。以下、これらをマシン所有者キー、または省略してMOKと呼びます。

次に、ブートローダはカーネルを検証および起動し、カーネルがモジュールで同じことを実行します。

12.1.2 Machine Owner Key(マシン所有者キー、MOK)

ユーザ(マシンの所有者)がブートプロセスの任意のコンポーネントを置換する場合は、Machine Owner Key(マシン所有者キー、MOK)を使用します。mokutilsツールがコンポーネントの署名およびMOKの管理を支援します。

登録プロセスでは、まずマシンを起動し、shimのロードで(キーを押すなどして)ブートプロセスを中断します。これによってshimが登録モードに移行するので、ユーザは、デフォルトのSUSEキーをブートパーティションのファイルに含まれるキーに置換できます。ユーザがこの処理を選択すると、shimはそのファイルのハッシュを計算し、結果をBoot Service Only(ブートサービス専用)変数にします。これによってshimは、ブートサービス以外でファイルが変更された場合にその変更を検出でき、ユーザ承認済みのMOKリストの改ざんを回避できます。

これらすべてがブート時に行われ、検証済みのコードのみが実行されます。このため、コンソールにいるユーザのみがマシン所有者のキーセットを使用できます。OSにリモートアクセスするマルウェアやハッカーではあり得ません。ハッカーやマルウェアはファイルの変更しかできず、Boot Service Only(ブートサービス専用)変数に保存されたハッシュを変更できないためです。

いったんロードされshimによって検証されたブートローダは、カーネルを検証する場合はshimにコールバックします(検証コードの複製を避けるため)。shimはMOKと同じリストを使用し、カーネルをロードできるかどうかをブートローダに知らせます。

このようにして、独自のカーネルまたはブートローダをインストールできます。物理的にそこにいることによって新しいキーセットをインストールしそれを認証する必要があるのは、最初の再起動時のみです。MOKは単一のMOKではなくリストなので、shimに複数のベンダーのキーを信頼させることができ、ブートローダからのデュアルブートやマルチブートが可能です。

12.1.3 カスタムカーネルのブート

以下はhttp://en.opensuse.org/openSUSE:UEFI#Booting_a_custom_kernelにもとづいています。

セキュアブートでは、セルフコンパイルカーネルを使用できます。ただし、独自の証明書を使って署名し、その証明書をファームウェアまたはMOKに知らせる必要があります。

  1. カスタムのX.509キー、および署名に使用される証明書を作成します。

    openssl req -new -x509 -newkey rsa:2048 -keyout key.asc \
      -out cert.pem -nodes -days 666 -subj "/CN=$USER/"

    証明書の作成の詳細については、http://en.opensuse.org/openSUSE:UEFI_Image_File_Sign_Tools#Create_Your_Own_Certificateを参照してください。

  2. PKCS#12形式でキーと証明書をパッケージ化します。

    openssl pkcs12 -export -inkey key.asc -in cert.pem \
      -name kernel_cert -out cert.p12
  3. pesignとともに使用するNSSデータベースを生成します。

    certutil -d . -N
  4. PKCS#12に含まれるキーおよび証明書をNSSデータベースにインポートします。

    pk12util -d . -i cert.p12
  5. pesignを使用して、新しい署名でカーネルをblessします。

    pesign -n . -c kernel_cert -i arch/x86/boot/bzImage \
      -o vmlinuz.signed -s
  6. カーネルイメージの署名をリスト表示します。

    pesign -n . -S -i vmlinuz.signed

    その時点で、通常通り/bootにカーネルをインストールできます。カーネルにはカスタム署名があるため、署名に使用された証明書をUEFIファームウェアまたはMOKにインポートする必要があります。

  7. ファームウェアまたはMOKにインポートするため、証明書をDERフォーマットに変換します。

    openssl x509 -in cert.pem -outform der -out cert.der
  8. よりアクセスしやすくするため、証明書をESPにコピーします。

    sudo cp cert.der /boot/efi/
  9. mokutilを使用して自動的にMOKリストを起動します。

    また、MOKを手動で起動する場合は以下の手順を実行します。

    1. 再起動

    2. GRUB メニューで<c>キーを押します。

    3. 以下のコマンドをタイプします。

      chainloader $efibootdir/MokManager.efi
      boot
    4. Enroll key from diskを選択します。

    5. cert.derファイルに移動してEnterキーを押します。

    6. 指示に従ってキーを登録します。通常、「0」を押してから「y」を押して確認します。

      また、ファームウェアメニューに、署名データベースに新しいキーを追加する方法が用意されている場合があります。

12.1.4 Inbox以外のドライバの使用

セキュアブートを有効にしたブートインストールの後は、Inbox以外のドライバ(SLEに付属していないドライバ)の追加がサポートされません。SolidDriver/PLDPで使用される署名キーは、デフォルトでは信頼されていません。

ただし、セキュアブートを有効にしたインストールでは、サードパーティドライバを次の2つの方法で使用できます。

  • インストール前にファームウェア/システム管理ツールを使用して、必要なキーをファームウェアデータベースに追加します。このオプションは、使用している特定のハードウェアによって異なります。詳細については、ハードウェアベンダーに問い合わせてください。

  • https://drivers.suse.com/またはハードウェアベンダーから入手したブート可能なドライバISOを使用して、初回ブート時に必要なキーをMOKリストに登録します。

ブート可能なドライバISOを使用してドライバキーをMOKリストに登録するには、次の手順に従います。

  1. 空のCD/DVDメディアにISOイメージを書き込みます。

  2. この新しいCD/DVDメディアからブートしてインストールを開始します。その際には、標準のSUSE Linux Enterpriseメディア、またはネットワークインストールサーバへのURLを用意しておきます。

    ネットワークインストールを行う場合、ブートコマンドラインでinstall=オプションを使用して、ネットワークインストールソースのURLを入力します。

    光学メディアからインストールする場合、インストーラが最初にドライバキットからブートされた後、SUSE Linux Enterprise製品の最初のディスクを挿入するように要求されます。

  3. アップデートされたドライバを含むinitrdが、インストールに使用されます。

詳細については、https://drivers.suse.com/doc/Usage/Secure_Boot_Certificate.htmlを参照してください。

12.1.5 制限

セキュアブートモードでブートする場合、以下の制限が適用されます。

  • ハイブリッド化されたISOイメージは、UEFIシステムでブート可能とみなされません。このため、USBデバイスからのUEFIブートは、SP3でサポートされません。

  • セキュアブートを簡単に回避できないようにするため、セキュアブートで実行する場合は一部のカーネル機能が無効になっています。

  • ブートローダ、カーネル、およびカーネルモジュールが署名されている必要があります。

  • kexecおよびkdumpが無効になっています。

  • ハイバネーション(ディスクの休止)は無効になっています。

  • ルートユーザであっても、/dev/kmemおよび/dev/memにアクセスできません。

  • ルートユーザであっても、I/Oポートにアクセスできません。すべてのX11グラフィカルドライバはカーネルドライバを使用する必要があります。

  • sysfs経由でPCI BARにアクセスすることはできません。

  • ACPIのcustom_methodは使用できません。

  • asus-vmiモジュールに対してdebufgsを使用できません。

  • acpi_rsdpパラメータはカーネルに影響を及ぼしません。

12.2 その他の情報

このページを印刷