サードパーティのモジュールをインストールするときに「セキュアブート」を無効にすることがポリシーに適用される理由


46

16.04のインストール時に、サードパーティのモジュール/ドライバーをインストールする場合、「セキュアブート」をオフにするように求められました。

従わなかった。

また、使用するサードパーティのドライバー(bcmwl-kernel-source)のみを手動でインストールすると、(パッケージのインストール中に)「セキュアブート」をオフにするように求められました。

使用bcmwl・カーネル・ソースすることで、完全に大丈夫だったセキュアブート15.10。これは私にはバグとは関係ないようです。

これは、Ubuntuがサードパーティのドライバー/モジュールに「セキュアブート」で動作(??)させるための署名を拒否したように見えます。または、サードパーティのモジュールは安全ではなく、「セキュアブート」を破ると見なしているようです。私は正しいですか?


6
まあ、IMO、それは人々が(誤って)アドバイスを与えるときにセキュアブートがサードパーティのモジュールを破壊すると想定しているからです。セキュアブートに関する技術情報は、wiki.ubuntu.com / SecurityTeam / SecureBootにあります。個人的には、セキュアブートを無効にするという一見ユビキタスなアドバイスに同意しませんが、セキュアブートを有効にしたハードウェアでは問題なく動作します。IMOは、問題がない限りセキュアブートを有効のままにします。セキュリティ機能を盲目的に無効にする理由はありません。
パンサー

8
これについては詳しく調べていませんが、理解しているように、16.04は、使用されている15.10以前のバージョンよりも厳密なセキュアブートの実施に移行しています。具体的には、15.10以前では、ShimがGRUBを起動すると、GRUBはすべての Linuxカーネルを起動します。セキュアブート保護はGRUBで終わります。私の理解では、16.04ではセキュアブートポリシーの適用がカーネルにまで及ぶため、UbuntuのGRUBは署名のないカーネルを起動しなくなります。それを超えると、未署名のカーネルモジュールも影響を受けます。繰り返しますが、私はこれを深く研究していません。
ロッド・スミス


1
サードパーティのモジュールをインストールしようとしてシステムをいじくり回している人がいるので、この機能が良いこと以上の害を与えないのではないかと思っています。
ダニエル

とにかくオフにした後に再度有効にする方法はありますか?
-shaunakde

回答:


38

これはバグではなく、機能です。

Anthony Wongが言うように、DKMSパッケージをインストールすると、自分でパッケージをコンパイルしているため、Canonicalはモジュールに署名できません。

ただし、確実にセキュアブートを使用することはできますが、モジュールを信頼するかどうかを判断できないため、セキュアブートが自分からユーザーを保護しようとするユースケースです。

デフォルトでは、UEFIマシンにプラットフォームキー(PK)があります。これは、プロセッサにコードをロードするための最終的に信頼できる認証局です。

GRUB、またはシム、またはその他のブートメカニズムは、ルートCA(PK)によって信頼されているKEKによってデジタル署名できるため、コンピューターは、Ubuntu Live USB / DVDなどのソフトウェアを設定なしでブートできます。

Ubuntu 16.04では、カーネルはCONFIG_MODULE_SIG_FORCE = 1で構築されます。これは、カーネルがモジュールをプラットフォーム内の信頼できるキー署名することを強制することを意味します。UEFIプラットフォームには、デフォルトでは制御できないPKが含まれているため、ご使用のマシンで認識されるキーでバイナリに署名することはできません。

一部の人々はそれに対してbり、andりますが、あなたが望む新しいキーを登録するのは自分自身である以上に(セキュリティの観点から)本当に良い方法はありません。

ブートシステムがshimを使用している場合、Machine Owner's Keyデータベースと呼ばれるものを使用し、キーをMOKとして登録できます(mokutilで実行できます)。そうでない場合は、キーをUEFIデータベースに署名キーとして登録することもできます。

キーを登録したら、MOKでDKMSビルドパッケージに署名できます(perlスクリプトが必要です/usr/src/kernels/$(uname -r)/scripts/sign-file)。署名した後、カーネルにロードできます

確かに、誰かがこれについてより視覚的な指示を行う必要があり、おそらくキーを考慮に入れるためのウィザードまたはより良いDKMS標準を作成する必要がありますが、これは現在のところです。

独自のカーネルモジュールに署名する方法については、この説明を参照できます:https : //askubuntu.com/a/768310/12049


1
私はそれを無効にしました、そして今、私は迷惑な「安全でないモードでの起動メッセージ」を受け取りますこれを元に戻す方法はありますか?ここでフォーラムで問題を説明することすらできないようです。@ssice-私はUBUNTU 14.04を使用しているので、これは私にとっても関係ないと思います。[
shaunakde

20

要するに、これはバグではなく、16.04で導入された新しい変更です。

インストールしているのはdkmsパッケージだからです。DKMSモジュールはユーザーのマシンでコンパイルされるため、Canonicalはモジュールに署名できません。Canonicalが署名できない場合、デジタルで検証する方法はありません。セキュアブートをオンにしている場合、モジュールを使用できないことを意味します。使用するには、セキュアブートをオフにする必要があります。そのため、質問が表示されます。

16.04でのみ発生し、以前のリリースでは発生しない理由について、Rod Smithが適切な回答を提供しました。Ubuntu 16.04では、Ubuntuはカーネルレベルでのセキュアブートの実施を開始します。16.04より前のバージョンでは、Ubuntuは、セキュアブートを有効にしている場合でも、署名済みカーネルと署名済みカーネルモジュールの使用を実際に強制しません。しかし、これは16.04には当てはまりません。

これは関連するバグです:https : //bugs.launchpad.net/ubuntu/+source/grub2/+bug/1401532

これは関連する青写真です:https : //blueprints.launchpad.net/ubuntu/+spec/foundations-x-installing-unsigned-secureboot


16.04 beta2で、更新後もwlモジュールをロードできました。しかし、今回のリリースでは「modprobe:ERROR:could not insert 'wl':
required

実行してみてください:sudo apt install mokutil; sudo mokutil --disable-validation
アンソニーウォン


1

受け入れられた答えは非常に完全ですが、ここから取られたこの簡単な情報を追加したいと思います。

https://askubuntu.com/a/843678/664391

基本的に安全なブートは、インストールした一部のドライバーをロードできない場合があり、非常にイライラする可能性があります。私は自分でこれを経験しました。ドライバーが正しくインストールされ、すべてがうまくいくように見えましたが、うまくいきませんでした。OSがそれをロードするのを妨げるセキュアブートであると気づくまでに時間がかかりました。

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