Ubuntuでフルディスク暗号化(LUKSの上にLVM)を使用してRAMへのサスペンドを安全にする方法は?


20

私はフルディスク暗号化(LUKSの上にLVM)を使用してUbuntu 13.04にいます。

luksSuspend一時停止手順に組み込んで(後で使用するluksResume)、キーマテリアルをメモリに残したままルートをロック解除せずにRAMに一時停止できるようにします。

私は過去7時間Arch Linux向けスクリプトを移植しようとしてきましたが、これまでのところ成功していません。正直、自分が何をしているのかわかりません...

誰も私がこれを移植するのを手伝うことができますか(またはこのようなものをゼロから作成できますか?)または、少なくとも、誰かがサスペンド手順に物を引っ掛ける方法と、rootへのすべてのIOがブロックされた後でも必要なバイナリとスクリプト(cryptsetupなど)を利用できるようにする方法についてのドキュメントを教えてもらえますluksSuspendか?

必要なバイナリとスクリプトを再開に使用できるようにする方法については、この他のブログ投稿(Archも同様)でそれらをコピーしました/boot。ただし、Vianneyが前に述べたスクリプトで使用した行では、この方法の方が少しエレガントに見えるため、さらに何かを使用したいと思います。


私は...この上でいくつかのより多くの時間を過ごす
ジョナスMalaco

構成するスクリプトを編集しましたpm-suspendが、ほとんどそこにいたようです。しかし、私は(私はシステムを停止することができないことが分かったecho -n "mem" > /sys/power/state(ルートファイルシステムを凍結後)cryptsetup luksSuspend ...)、まだいくつかのI / Oを必要とするために...
ジョナスMalaco

1
Debianリスト(およびこれらのリストにリンクまたはリンクされた他のリスト)に関するいくつかの議論を読みましたが、これまでのところ、ソリューションでは「deinitramfs」のようなものが必要と思われます。実際にシステムをサスペンドする直前に、このtmpfsが最終的なクリーンアップアクション(rootfsの暗号化キーの消去など)を実行できるようにします。
ジョナスマラコ

この質問にも答えてもらいたいです。
BenAlabaster

回答:


3

同じ問題に遭遇したので、同じスクリプトを移植する別のショットを撮りまし。後luksSuspendに不揮発性ストレージにアクセスしないため、暗号化された/ bootを使用した実際のフルディスク暗号化でも機能します。ただし、注意する必要があります-予期したとおりに動作しない場合があります!

移植されたスクリプトは次のことを行います。

  • ramfsマウントをどこかに作成します
  • そこにinitramfsの内容を抽出します(initramfs中断スクリプトを含む)
  • (例えば、関連するディレクトリをマウントBIND /sys/proc/dev/runramfsマウント)に
  • 干渉する可能性のあるサービスをすべて停止します(systemd-udevd、systemd-journald)
  • ルートファイルシステム(ext4またはbtrfs)をnobarrierで再マウントして、S3に移行しようとしてLinuxがハングしないようにしてから、同期します
  • initramfsマウントにchrootします。これは再び同期し、実行されluksSuspend、コンピューターをスリープ状態にします。
  • luksResume起動後、ファイルシステムを再マウントし、サービスを再起動し、initramfsマウントでバインドマウントをアンマウントします
  • 最後に、initramfsマウントをアンマウントして、initramfsファイルに使用されているRAMを解放します。

私はまだスクリプトの広範なテストを行っていませんが、私にとっては確実に機能するようです。別のファイルシステム(つまり、ext4またはbtrfsではない)を使用する場合、バリアに関する問題が発生する可能性があるため、スクリプトも変更する必要があります。

いずれにせよ、スクリプトが最初に機能することをテストして検証することをお勧めします。LinuxをS3に入れようとしているときに(つまりecho mem > /sys/power/state)ハングする場合は、回復できるはずです。

  • 中断する前に、ttyまたは他の端末(アクセスできるようにするので、理想的にはtty)を開きます
  • cryptsetupと関連ライブラリをRAMにロードします。 sudo cryptsetup luksResume anything_here
  • スクリプトを使用して中断する
  • chrootの後にハングする場合(たとえばstarting version xxx、新しいvtにafter が表示される)、前に開いたttyに切り替えて実行しますsudo cryptsetup luksResume your_luks_device_name_here
  • それもハングする場合は、別のvtを開き、次の場所にchrootし/run/initramfsます。sudo chroot /run/initramfs /bin/ash
  • 実行してみてくださいluksResumecryptsetup luksResume your_luks_device_name_here && exit
  • その後、コンピューターはサスペンドするはずです。その後、起動し、スクリプトがまだ実行中の場合はスクリプトを強制終了し、バインドマウントとをアンマウントし、/run/initramfs該当する場合はバリアを使用してルートファイルシステムを再マウントします。

1

私はこのセットアップの経験はありませんが、多くの人がこれで成功を主張しています。ここにそれらのいくつかがあります。

LUKSを使用したdm-crypt-スワップパーティションの暗号化
方法:Ubuntu 6.10 Edgy Eft ubuntu-full-disk-encryption-lvm-luksを使用したディスクパーティションへのサスペンドを含む完全に暗号化されたハードディスク

ただし、それらのいずれもluksSuspendを使用しません(これが機能する理由かもしれません)。


リンクをありがとう...最後のリンク(13.04インストーラーによって自動生成される)と同様のセットアップを使用しています。
ジョナスマラコ

今のところ一時停止しないでください。メモリからキーをクリアするには電源をオフにする必要があります。それでも、リンクをありがとう!たぶんこれを手動で設定する方法を理解することで、ramsを一時停止するためにluksSuspendを使用する方法についての洞察を得ることができます。
ジョナスマラコ

1
luksSuspendの使用は非常に難しいようです。すべてのI / Oがフリーズするため、非常にアクロバティックなサスペンドスクリプトが必要です。私は一つだけ見つけることができるの成功物語(ひどく)することができドイツ語、英語に翻訳します。テンプレートとして使用してみてください。
ハリーマク

2
RAMディスクと静的にリンクされたcryptsetupを使用する必要がある場合もあります。
ハリーマク

1

Ubuntu 15.10でこれを完全に機能させるのに少し時間をかけました。ext2、ext3、またはext4でこれを機能させる場合は、/ etc / fstabを更新して、「nobarrier」オプションでボリュームをマウントする必要があります。それ以外の場合は、BTRFSを使用することをお勧めします。

ファイルシステムが準備されたら、次のスクリプトを使用します:https : //github.com/Microcentillion/ubuntu-lukssuspend

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