web-dev-qa-db-ja.com

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

フルディスク暗号化(LUKSの上にLVM)を使用しているUbuntu13.04を使用しています。

luksSuspendをサスペンドプロシージャに組み込み(後でluksResumeを使用)、メモリにキーマテリアルを残さずにRAM)にサスペンドできるようにします。ルートのロックが解除されました。

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

誰かが私がこれを移植するのを手伝ってくれる(またはこのようなものを最初から作成する)ことができますか?または、少なくとも、サスペンドプロシージャに何かをフックする方法と、必要なバイナリとスクリプト(cryptsetupなど)をルートにIO)した後でも利用できるようにする方法についてのドキュメントを誰かに教えてもらえますか? (luksSuspendによって)ブロックされましたか?

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

20
Jonas Malaco

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

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

  • どこかにramfsマウントを作成します
  • そこでinitramfsの内容を抽出します(initramfsサスペンドスクリプトを含む)
  • マウント関連のディレクトリ(例:/sys/proc/dev/run)をramfsマウントにバインドします
  • 干渉する可能性のあるサービスをすべて停止します(systemd-udevd、systemd-journald)
  • ルートファイルシステム(ext4またはbtrfs)をnobarrierで再マウントして、LinuxがS3に入ろうとしてハングしないようにしてから、同期します
  • 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の後でハングする場合(たとえば、新しいvtにstarting version xxxが表示された後)、前に開いたttyに切り替えて、Sudo cryptsetup luksResume your_luks_device_name_hereを実行します。
  • それもハングする場合は、別のvtを開き、/run/initramfsSudo chroot /run/initramfs /bin/ashにchrootします。
  • luksResumeを実行してみてください:cryptsetup luksResume your_luks_device_name_here && exit
  • その後、コンピュータは一時停止する必要があります。次に、スクリプトをウェイクアップし、スクリプトがまだ実行されている場合はスクリプトを強制終了し、バインドマウントと/run/initramfsをアンマウントし、該当する場合はバリアを使用してルートファイルシステムを再マウントします。
3
zhongfu

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

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

1
user569427

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

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

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

1
harrymc