10.6. LUKS 暗号化ボリュームのロックを自動解除するように NBDE クライアントを設定する
Clevis フレームワークを使用すると、選択した Tang サーバーが使用可能な場合に、LUKS 暗号化ボリュームのロックを自動解除するようにクライアントを設定できます。これにより、Network-Bound Disk Encryption (NBDE) デプロイメントが作成されます。
前提条件
- Tang サーバーが実行されていて、使用できるようにしてある。
手順
既存の LUKS 暗号化ボリュームのロックを自動的に解除するには、
clevis-luks
サブパッケージをインストールします。dnf install clevis-luks
# dnf install clevis-luks
Copy 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 を使用する新しい鍵を有効にします。
注記バインド手順では、空き LUKS パスワードスロットが少なくとも 1 つあることが前提となっています。そのスロットの 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-dracut
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 初期 RAM ディスクを再生成します。
dracut -fv --regenerate-all --hostonly-cmdline
# dracut -fv --regenerate-all --hostonly-cmdline
Copy 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-all
Copy 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