ライブルートファイルシステムをリモートで暗号化し、SSH経由でロックを解除する方法

ライブルートファイルシステムをリモートで暗号化し、SSH経由でロックを解除する方法

VPS上で動作するLinux Archシステムがあります。 rootfs は LVM パーティションにインストールされます。このパーティションに暗号化されたコンテナをオーバーレイしてから、rootfsを再マウントし、SSH経由で起動時にSSHのロック解除を有効にしたいと思います。既存のrootfsのすべての内容を削除し、最初から新しいルートfsを作成することを嬉しく思います。

私は次のように進みます:

  1. /tmp/newrootに新しい一時rootfsを作成します(私はアーチスウィキ)
  2. chrootとpacmanの設定、認証キーを定義するエントリのインストール、sshdを有効にしますが起動しません
  3. 元のルートディレクトリに戻る
  4. 新しいルートに永久に切り替える:次の提案これは素晴らしい記事です、以下のコードを実行します。
  5. この時点で、lvmパーティションの以前のルートにまだかかっているsshdおよび他のすべてのサービスを再起動したいと思います。
  6. lvmパーティションで暗号化されたパーティションを作成する
  7. それにArch Linuxをインストールし、intrafmsを適切に修正してください。

ステップ6と7はよく文書化されています(例:ここ)。

以下は、うまく機能する4段階の詳細です。

# we start after step 2, so that /tmp/newroot contains a minimal temporary root fs 
# with network, sshd and pacman, and the command prompt is from the original root

# move the new root fs to a newly create /tmproot, as per the referenced post
# (perhaps this is redundant, I could have used newroot directly, but it should not harm)
mkdir /tmp/tmproot
mount -t tmpfs none /tmp/tmproot
mv /tmp/newroot/* /tmp/tmproot

# switch to new root
mount -a
mount --make-rprivate / # necessary for pivot_root to work
pivot_root /tmp/tmproot /tmp/tmproot/oldroot

# move some directories to newroot
for i in dev proc sys run; do mount --move /oldroot/$i /$i; done

5段階で詰まっています。を使用すると、fuser -vm /oldroot以前のルートパーティションにまだ多くのプロセスがかかっていることがわかります。 newrootで再起動しようとするとsystemctlエラーが発生します。

# systemctl restart sshd
Failed to restart sshd service: Failed to activate service 'org.freedesktop.systemd1': timed out

手動で終了することはできますが、initプロセスだけが残っていてsystemd終了する方法がないようです。systemctl daemon-reexec不可能。

たぶんファイルシステムで何かを構成するのを忘れてしまったのでしょうnewrootか?たぶんswitch_root代わりに使うべきですかpivot_root

どんな提案がありますか?ありがとう

ベストアンサー1

見てhttps://wiki.archlinux.org/index.php/Dm-crypt/Specialties。 mkninitcpio暗号化フックをencryptsshに切り替えて、カーネルブートラインに何かを追加できます。私はdropbearフックを使用しており、本当にうまくいきます。

おすすめ記事