UEFIセキュアブートでLinuxの休止状態を有効にし、選択した現在のディストリビューション(またはメインラインカーネル)からカーネルをロックする方法は?

UEFIセキュアブートでLinuxの休止状態を有効にし、選択した現在のディストリビューション(またはメインラインカーネル)からカーネルをロックする方法は?

現在のLinuxディストリビューションがUEFIセキュアブートで実行されると、カーネルロックが設定されます。マルチカーネルメッセージ

Lockdown: swapper/0: hibernation is restricted; see man kernel_lockdown.7

説明がサポートされる場合があります。 UEFIセキュアブートの休止状態が壊れています。この印象は、ほとんどのインターネットソースを読むときにサポートされています。この説明は間違った、しかし。これが、メッセージが「無効」の代わりに「制限」という単語を使用する理由です。 kernel_lockdownをサポートするための署名付きカーネル/メモリイメージへのパッチが2017年頃から開発中であることがわかりました。 2011年。

LUKSは、少なくともスワップスペース(フルHD以外)を暗号化し、TPMが含まれている場合は高レベルの自動化を使用してもロック状態で休止状態を有効にできます。

おすすめの本:

この機能を実装できる主流のカーネルバージョンは何ですか?最も専門的に維持されているディストリビューションのうち、ロック時に休止状態を有効にするパッチがインストールされているディストリビューションは何ですか?有効にするにはどうすればよいですか?

これらのディストリビューションはRHELとClones、Debian(およびUbuntu)、SLES / OpenSuseです。大規模なユーザーベースの展開に最適な「簡単な」ソリューションをご存知であれば、自由に回答してください。

提案したように独自のパッチを挿入できるかどうか疑問に思います。セキュアブートが有効な状態で休止状態を可能にするカーネルパッチ現在のディストリビューションには必須です。ディストリビューションが必要です。ゴルフをする場所。

答え1

同時に私は宣言できる。オープンスース15.3そして15.4確かに可能ですが、快適さのレベルは異なり、主に手動パスワード入力と暗号化されたトークンによる自動復号化に焦点を当てています。

新規インストール(OpenSuse)

最も簡単なインストールパスは、インストール中にディスク暗号化とLVM(「ブートインストール」)を選択することです。これにより、暗号化されたLVにルートファイルシステムとスワップが配置されます。カーネルは依然として「休止状態制限」メッセージを発行しますが、カーネルはスワップ領域が暗号化されてディスク上で一時停止されることを検出したようです。

systemctl hibernate

ただし、少なくともRAMサイズがスワップに合っていることを確認する必要があります。しかし、ほとんどのRAMがバッファとキャッシュに使用される限り、書き込まれる画像はRAMサイズよりはるかに小さいです。 GUI(KDEテスト)には、「Sleep」ボタンと「Hibernate」ボタンが表示されます。

既存システムの修正

また、暗号化された交換があるがLVMを持たないプリインストールされたシステムを構成することもできました。これはディストリビューションに依存しません。ただし、ルートディレクトリが暗号化されていない限り、これは制限された保護を提供することに注意してください。セーフブートでは、少なくとも休止状態に入ることができます。

  1. gdiskを使用してデフォルトのスワップパーティション(/dev/sdaXなど)を作成します。パーティションタイプdm-crypt(8308)

  2. 基本パーティションフォーマット

cryptsetup luksFormat -y -v --type luks2 /dev/sdaX

  1. 暗号化されたパスワードを入力してください

  2. 暗号化されていないデバイスを開く

cryptsetup luksOpen /dev/sdaX cr_swap

  1. この場合、私の/ etc / crypttabはcryptsetupによって生成されなかったので、次のように入力する必要がありました(からfs uuidを取得するlsblk -d -o uuid /dev/sdaX)。

cr_swap UUID=[fs UUID of/dev/sdaX] x-initrd.attach なし

  1. フォーマット交換

mkswap /dev/mapper/cr_swap

  1. cr_swapのUUIDを記録してください。

lsblk -o name,type,uuid

  1. 次の行で /etc/fstab を更新します。

UUID = [cr_swapのUUID]スワップデフォルト値0 0

  1. テスト交換

swapon -a swapon -s

  1. GRUB2ブートローダでカーネルパラメータを追加するresume=/dev/disk/by-uuid/[UUID of cr_swap]

  2. initrdが更新されていることを確認してください(例:回復モジュールが必要です!)

dracut -f

  1. 再起動を行い、休止状態を試してください。

暗号通貨取引所が検出されたことを確認できます。

fwupdmgr security --force

どこかに出力が必要です。

✔ Linux kernel lockdown:         Enabled
✔ Linux swap:                    Encrypted
✔ fwupd plugins:                 Untainted

結果

しかし改善の余地があります。

  • オプション1にLVMが含まれているOpensuseシステムは、ディスクパスワードを要求します。二重。 (GRUB2+初期化)

  • 2番目のバージョンでは、systemdは起動時に交換パスワードを入力するように求められます。一度。

  • TPMまたはFIDO2デバイスを使用すると、パスワードなしでディスクを復号化できますが、これは別の話です。

関連情報