Linuxでセキュアブートを有効にする方法はありますか?


8

Windowsのセキュアブートがブート時に外部OSローダーコードを実行できないように、Linuxにも同様のオプションがありますか?私は周りを見回しましたが、検索すると、UEFI対応のWindowsマシンにLinuxをインストールする方法しか得られません。このオプションをLinuxマシンに導入する方法がわかりません。


検索キーワード: "trusted grub"
Gilles 'SO- stop be evil'

shimMicrosoftによって署名されたブートローダーをインストールする可能性があります。たとえば、wiki.debian.org
SecureBootを

@Gillesは、trustedgrubソフトウェアを信頼できますか?ブートプロセスを変更するものをダウンロードするのは怖いです。
Rohan

@Rohan Trusted Grubは、他の基本的なLinuxソフトウェアと同様に信頼できます。LinuxのTPMソフトウェアスタックであるTrouSersと同じ人々によって維持されています。
Gilles「SO-邪悪なことをやめなさい」2016

回答:


3

セキュアブートを機能させるには、ハードウェアがセキュアブートをサポートし、OSがセキュアブートをサポートする必要があります。

ハードウェアの場合、UEFI設定メニューでチェックインでき、OSによって提供される証明書/キーを追加する必要があります

OSの場合、次のコマンドでサポートを確認できます。

[root@secureboot-guest ~]# cat /sys/kernel/security/securelevel 

上記のコマンドの出力が「1」の場合、セキュアブートがサポートされ、OSによって有効になっています。


そのようなファイルはありません...
Rohan

@Rohan、カーネルがセキュアブートサポートでコンパイルされていない可能性があります。次の出力を確認します。[root @ secureboot-guest〜]#cat / boot / config-uname -r | セキュアブートのサポートは、あなたが以下のような出力が得られますカーネル内に存在する場合はgrep SECURE:CONFIG_EFI_SECURE_BOOT_SECURELEVELをy CONFIG_SECURITY_SECURELEVEL = Y =
shubham

-r私の端末によると、猫のための無効なオプションです。
Rohan

ああ、それはLinuxコマンドでした。これはコマンドです:cat / boot / uname -r
config-

2

最初に、独自のキーを生成します

openssl req -new -nodes -utf8 -sha256 -days 36500 -batch -x509 \
       -subj "/ CN = Kernel Key" -outform DER -out kernel.der \
       -keyout kernel.key

CONFIG_EFI_STUBを使用してLinuxカーネルをコンパイルし、initramfsをそれに組み込みます。https//prosauce.org/blog/2015/10/31/booting-linux-securely、次のスクリプトを使用してモジュールに署名できます。

/ usr / src / linux-headers-$(uname -r)/ scripts / sign-file sha256 kernel.key kernel.der module.ko

次に、ラップトップ\ワークステーション用のカーネルコマンドラインを使用してファイルを作成し、1つのイメージを作成して、次のようにefiブートディレクトリにコピーします。

#objcopy \
  --add-section .osrel = / etc / os-release --change-section-vma .osrel = 0x20000 \
  --add-section .cmdline = / tmp / cmdline --change-section-vma .cmdline = 0x30000¥
  --add-section .linux = / boot / vmlinuz --change-section-vma .linux = 0x2000000 \
  --add-section .initrd = / boot / initrd.img --change-section-vma .initrd = 0x3000000¥
/usr/lib/systemd/boot/efi/linuxx64.efi.stub linux.efi

#mkdir -p / boot / efi / EFI / BOOT

#sbsign --key /root/keys/ISK.key --cert /root/keys/ISK.pem --output /boot/efi/EFI/BOOT/BOOTX64.EFI linux.efi / boot / efi / EFI / BOOT /BOOTX64.EFI

独自のキーをMBファームウェアにインストールするには、次のようなコマンドを実行できます。

openssl x509 -inform der -in kernel.der -outform pem -out kernel.pem
cert-to-efi-sig-list -g "$(uuidgen)" kernel.pem kernel.esl
sign-efi-sig-list -k KEK.key -c KEK.pem kernel kernel.esl kernel.auth

-1

AFAIKセキュアブートは、MicrosoftおよびUEFIコンソーシアムを形成する他のいくつかの企業によって開発されたUEFI機能です。

UEFIはハードウェアによって部分的に強化されています。つまり、マザーボードの設定が邪魔になる場合とそうでない場合があります。完全なUEFIを使用している場合は、UEFIメニュー自体からセキュアブートを有効にできる可能性があります。

ただし、ファームウェアがCSM / BIOSを備えたUEFIである場合は、セキュアブートを有効にするオプションなどの特定の障害がグレー表示される可能性があります。


2
これは、Microsoft製品ではありません、それは標準のMicrosoftがその作成に発言の多くを持っていたかもしれないです:en.wikipedia.org/wiki/...
PHK

@phkはそれに応じて回答を更新しました
sohom154 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.