9.6. LUKS 暗号化ボリュームのロックを自動解除するように NBDE クライアントを設定する
Clevis フレームワークを使用すると、選択した Tang サーバーが使用可能な場合に、LUKS 暗号化ボリュームのロックを自動解除するようにクライアントを設定できます。これにより、Network-Bound Disk Encryption (NBDE) デプロイメントが作成されます。
前提条件
- Tang サーバーが実行されていて、使用できるようにしてある。
手順
既存の LUKS 暗号化ボリュームのロックを自動的に解除するには、
clevis-luksサブパッケージをインストールします。dnf install clevis-luks
# dnf install clevis-luksCopy to Clipboard Copied! Toggle word wrap Toggle overflow PBD 用 LUKS 暗号化ボリュームを特定します。次の例では、ブロックデバイスは /dev/sda2 と呼ばれています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow clevis luks bindコマンドを使用してボリュームを Tang サーバーにバインドします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、以下の 4 つの手順を実行します。
- LUKS マスター鍵と同じエントロピーを使用して、新しい鍵を作成します。
- Clevis で新しい鍵を暗号化します。
- LUKS2 ヘッダートークンに Clevis JWE オブジェクトを保存するか、デフォルト以外の LUKS1 ヘッダーが使用されている場合は LUKSMeta を使用します。
- LUKS を使用する新しい鍵を有効にします。
注記このバインド手順では、少なくとも 1 つの LUKS パスワードの空きスロットがヘッダーにあることを前提としています。そのスロットの 1 つを
clevis luks bindコマンドが使用します。これで、既存のパスワードと Clevis ポリシーを使用してボリュームのロックを解除できるようになりました。
システムの起動プロセスの初期段階でディスクバインディングを処理するには、インストール済みのシステムで
dracutツールを使用します。RHEL では、Clevis はホスト固有の設定オプションを指定せずに汎用initrd(初期 RAM ディスク) を生成し、カーネルコマンドラインにrd.neednet=1などのパラメーターを自動的に追加しません。初期の起動時にネットワークを必要とする Tang ピンを使用する場合は、--hostonly-cmdline引数を使用し、dracutが Tang バインディングを検出するとrd.neednet=1を追加します。clevis-dracutパッケージをインストールします。dnf install clevis-dracut
# dnf install clevis-dracutCopy to Clipboard Copied! Toggle word wrap Toggle overflow 初期 RAM ディスクを再生成します。
dracut -fv --regenerate-all --hostonly-cmdline
# dracut -fv --regenerate-all --hostonly-cmdlineCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、
/etc/dracut.conf.d/ディレクトリーに .conf ファイルを作成し、そのファイルにhostonly_cmdline=yesオプションを追加します。すると、--hostonly-cmdlineなしでdracutを使用できます。次に例を示します。echo "hostonly_cmdline=yes" > /etc/dracut.conf.d/clevis.conf dracut -fv --regenerate-all
# echo "hostonly_cmdline=yes" > /etc/dracut.conf.d/clevis.conf # dracut -fv --regenerate-allCopy to Clipboard Copied! Toggle word wrap Toggle overflow Clevis がインストールされているシステムで
grubbyツールを使用して、システム起動時の早い段階で Tang ピンのネットワークを利用できるようにすることができます。grubby --update-kernel=ALL --args="rd.neednet=1"
# grubby --update-kernel=ALL --args="rd.neednet=1"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
Clevis JWE オブジェクトが LUKS ヘッダーに正常に配置されていることを確認します。
clevis luks listコマンドを使用します。clevis luks list -d /dev/sda2
# clevis luks list -d /dev/sda2 1: tang '{"url":"http://tang.srv:port"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow バインディングが初期ブートで使用できることを確認します。次に例を示します。
lsinitrd | grep clevis-luks
# lsinitrd | grep clevis-luks lrwxrwxrwx 1 root root 48 Jan 4 02:56 etc/systemd/system/cryptsetup.target.wants/clevis-luks-askpass.path -> /usr/lib/systemd/system/clevis-luks-askpass.path …Copy to Clipboard Copied! Toggle word wrap Toggle overflow