Linux
PR

【Linux】Ubuntu LVM暗号化をリモート解除する方法【Dropbear SSH】

えりる
記事内に商品プロモーションを含む場合があります

UbuntuでLVM暗号化を利用していて、起動時にパスフレーズをリモートで入力したい場合、Dropbear SSH を initramfs に組み込むことで実現できます。

Dropbear は軽量な SSH サーバーで、OS が完全に起動する前の初期起動段階 (initramfs) で動作させることができます。これにより、SSH 経由で接続し、LUKS 暗号化された LVM ボリュームのパスフレーズを入力して、システムの起動を継続させることが可能になります。

この記事ではDropbear SSH を initramfs に組み込み、リモートで暗号化を復号する方法を解説します。

環境

  • Ubuntu 24.04
  • LUKS (Linux Unified Key Setup) で暗号化された LVM が設定済みであること。

Dropbear SSH のセットアップ

Dropbear SSH と busybox のインストール

dropbear-initramfs パッケージをインストールします。
これは、initramfs 環境で Dropbear を動作させるために必要なものです。
busybox も依存関係としてインストールされることが多いですが、念のため確認してください。

sudo apt update
sudo apt install dropbear-initramfs busybox

SSH 公開鍵の追加

SSH キー認証を利用することを強く推奨します。パスワード認証も可能ですが、セキュリティ上のリスクが高まります。

リモートから接続するために使用するクライアントの公開鍵(例えばid_rsa.pub)を、Dropbear が起動時に読み込む authorized_keys ファイルに追加します。

公開鍵認証によるssh接続設定については以下の記事で解説しています。
(LVM暗号化をリモート解除しようとしているようなレベルの人には必要ないかな…笑)

あわせて読みたい
【Raspberry Pi】公開鍵認証でSSH接続する方法(ラズパイのセキュリティ設定)
【Raspberry Pi】公開鍵認証でSSH接続する方法(ラズパイのセキュリティ設定)

まずは公開鍵と秘密鍵を作成しましょう。もうすでに持っている人はその鍵でもOKです。
以下のコマンドで作成します。(方式は好みのものでOK)

ssh-keygen -t rsa

公開鍵の内容をコピーして、authorized_keys に追記します。
このファイルは/etc/dropbear/initramfs に作成します。
もうすでにLinuxマシンにauthorized_keysがあり、同じ内容を用いたい場合は/etc/dropbear/initramfsauthorized_keysをコピーしましょう。

新しく作成する場合は以下のコマンドで公開鍵の内容をファイルに追記できます。

sudo bash -c 'cat ~/.ssh/id_rsa.pub >> /etc/dropbear/initramfs/authorized_keys'

その後、authorized_keysファイルの権限設定を以下のとおり行います。

sudo chmod 600 /etc/dropbear/initramfs/authorized_keys

chmod 600 は、ファイル所有者 (root ユーザー) のみが読み書きでき、他の誰も読み書き実行できないように設定します。

Dropbear の設定

/etc/dropbear/initramfs/dropbear.conf を編集して、Dropbear の動作を設定します。
まず、以下のコマンドで上記ファイルを開きます。

sudo vi /etc/dropbear/initramfs/dropbear.conf 

ファイル内の#DROPBEAR_OPTIONS=""という記述を探します。見つけたら冒頭の#を削除してコメントアウトを外しましょう。
そして、以下の通り編集します。

DROPBEAR_OPTIONS="-I 180 -j -k -p 222 -s -c cryptroot-unlock"
設定内容の説明

ポートの変更

標準のSSHポート (22) と衝突しないように、別のポートを設定することが推奨されています。ここでは以下の個所でポート222を接続先として設定しています。

-p 222

強制コマンド

SSH接続後、すぐに cryptroot-unlock コマンドが実行されるように設定しています。
cryptroot-unlock コマンドは、LVM暗号化のパスフレーズを入力し、システムがLVMを復号して、通常の起動プロセスを続行するものです。

rootログインについて

復号時にrootログインをする必要があるので、ここではrootログインを禁止していません。
Dropbear SSHがinitramfs内で起動し、LVMの復号が完了した後は、通常のOSの起動プロセスへと制御が移ります。このとき、initramfs環境は基本的にアンマウントされ、破棄されます。
そのため、復号後もDropbear SSHが起動したままになることはないので、大丈夫だと思います。

その他設定項目

  • -I はアイドルタイムアウト
  • -j -k はポートフォワーディングの無効化
  • -s はパスワード認証の無効化

initramfs のネットワーク設定

静的IPアドレスの割り当て

もし静的IPアドレスを使用する場合、initramfs 起動時にネットワークが利用可能になるように設定が必要です。
まず、以下のコマンドで //etc/default/grub を開きます。

sudo vi /etc/default/grub

ファイルの中に GRUB_CMDLINE_LINUX= で始まる行があるか確認し、なければ追記、あればコメントアウトを解除して編集します。
静的IPアドレスを設定するための書式は以下の通りです。

GRUB_CMDLINE_LINUX="ip=<クライアントIP>:<サーバーIP>:<ゲートウェイIP>:<ネットマスク>:<ホスト名>:<デバイス>:<autoconf>"

各フィールドはコロン : で区切られ、省略することも可能ですが、静的IPを設定する場合は必要な情報をすべて指定するのが一般的です。

各設定項目の説明
  • <クライアントIP>
    • 割り当てたい固定IPアドレス
    • 必須。
    • 例: 192.168.1.100
  • <サーバーIP>
    • 通常、TFTPサーバーなどのIPアドレス。
    • 省略可能で、その場合は空にする。
    • 空のままにする場合はコロンを連続させる ::
  • <ゲートウェイIP>
    • デフォルトゲートウェイのIPアドレス
    • 必須
    • 例: 192.168.1.1
  • <ネットマスク>
    • フル形式 (255.255.255.0) または CIDR 形式 (/24) のどちらでも指定できるが、initramfs.conf の場合はフル形式 (255.255.255.0) を推奨
    • 例: 255.255.255.0
  • <ホスト名>
    • マシンのホスト名
    • 任意
    • 例: erirubuntu
  • <デバイス>
    • ネットワークインターフェース名
    • ip a コマンドで確認した名前を使用する
    • 例: enp0s3
  • <autoconf>: 自動設定の方法。
    • on: DHCP/BOOTP を試みる。
    • off: 自動設定なし (静的IPアドレスの場合に指定)。
    • dhcp: DHCP を使用。
    • bootp: BOOTP を使用。

記述例は以下のようになります。

GRUB_CMDLINE_LINUX="ip=192.168.1.100::192.168.1.1:255.255.255.0:myubuntu:eth0:off"

最後に以下のコマンドで修正を反映します。

sudo update-grub

initramfs の更新

設定を保存したら、以下のコマンドで initramfs イメージを再構築します。

sudo update-initramfs -u -k all

再起動とテスト

システムを再起動します。コマンドで行う場合は以下の通りです。

sudo reboot

起動後、LUKS のパスフレーズ入力待ちの状態で止まります。
この時、Dropbear SSH サーバーが起動しているので、別のマシンからSSHで接続します。

ssh -p <設定したポート番号> -i <秘密鍵> root@<UbuntuマシンのIPアドレス>

パスフレーズを入力するように求められたら、LVM暗号化のパスフレーズを入力し、Enterキーを押します。
パスフレーズが正しければ、システムがLVMを復号し、通常の起動プロセスを続行することができます。

まとめ

この記事ではDropbear SSH を initramfs に組み込み、リモートで暗号化を復号する方法を解説しました。
これによって、マシンの前でしか復号できなかったのがリモートで行えるようになるので、かなり便利になるのではないでしょうか。

えりるについて
えりる
えりる
日本のどこかに生息する平成生まれの研究者。とっても理論家と思いきや気分屋さんでもある。基本的にめんどくさがり。修士(工学)を持っている。 Windows, Mac, Linuxの三刀流。
記事URLをコピーしました