10.7. LUKS で暗号化したボリュームの手動登録の設定
Clevis フレームワークを使用すると、選択した Tang サーバーが使用可能な場合に、LUKS 暗号化ボリュームのロックを自動解除するようにクライアントを設定できます。これにより、Network-Bound Disk Encryption (NBDE) デプロイメントが作成されます。
前提条件
- Tang サーバーが実行されていて、使用できるようにしてある。
手順
既存の LUKS 暗号化ボリュームのロックを自動的に解除するには、
clevis-luks
サブパッケージをインストールします。# dnf install clevis-luks
PBD 用 LUKS 暗号化ボリュームを特定します。次の例では、ブロックデバイスは /dev/sda2 と呼ばれています。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 12G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 11G 0 part └─luks-40e20552-2ade-4954-9d56-565aa7994fb6 253:0 0 11G 0 crypt ├─rhel-root 253:0 0 9.8G 0 lvm / └─rhel-swap 253:1 0 1.2G 0 lvm [SWAP]
clevis luks bind
コマンドを使用して、ボリュームを Tang サーバーにバインドします。# clevis luks bind -d /dev/sda2 tang '{"url":"http://tang.srv"}' The advertisement contains the following signing keys: _OsIk0T-E2l6qjfdDiwVmidoZjA Do you wish to trust these keys? [ynYN] y You are about to initialize a LUKS device for metadata storage. Attempting to initialize it may result in data loss if data was already written into the LUKS header gap in a different format. A backup is advised before initialization is performed. Do you wish to initialize /dev/sda2? [yn] y Enter existing LUKS password:
このコマンドは、以下の 4 つの手順を実行します。
- LUKS マスター鍵と同じエントロピーを使用して、新しい鍵を作成します。
- Clevis で新しい鍵を暗号化します。
- LUKS2 ヘッダートークンに Clevis JWE オブジェクトを保存するか、デフォルト以外の LUKS1 ヘッダーが使用されている場合は LUKSMeta を使用します。
- LUKS を使用する新しい鍵を有効にします。
注記バインド手順では、空き LUKS パスワードスロットが少なくとも 1 つあることが前提となっています。そのスロットの 1 つを
clevis luks bind
コマンドが使用します。ボリュームは、現在、既存のパスワードと Clevis ポリシーを使用してロックを解除できます。
システムの起動プロセスの初期段階でディスクバインディングを処理するようにするには、インストール済みのシステムで
dracut
ツールを使用します。# dnf install clevis-dracut
RHEL では、Clevis はホスト固有の設定オプションを指定せずに汎用
initrd
(初期 RAM ディスク) を生成し、カーネルコマンドラインにrd.neednet=1
などのパラメーターを自動的に追加しません。初期の起動時にネットワークを必要とする Tang ピンを使用する場合は、--hostonly-cmdline
引数を使用し、dracut
が Tang バインディングを検出するとrd.neednet=1
を追加します。# dracut -fv --regenerate-all --hostonly-cmdline
または、
/etc/dracut.conf.d/
に .conf ファイルを作成し、以下のようにhostonly_cmdline=yes
オプションを追加します。# echo "hostonly_cmdline=yes" > /etc/dracut.conf.d/clevis.conf
注記Clevis がインストールされているシステムで
grubby
ツールを使用して、システム起動時の早い段階で Tang ピンのネットワークを利用できるようにすることができます。# grubby --update-kernel=ALL --args="rd.neednet=1"
次に、
--hostonly-cmdline
なしでdracut
を使用できます。# dracut -fv --regenerate-all
検証
Clevis JWE オブジェクトが LUKS ヘッダーに適切に置かれていることを確認するには、
clevis luks list
コマンドを使用します。# clevis luks list -d /dev/sda2 1: tang '{"url":"http://tang.srv:port"}'
(DHCP を使用しない) 静的な IP 設定を持つクライアントに NBDE を使用するには、以下のように、手動でネットワーク設定を dracut
ツールに渡します。
# dracut -fv --regenerate-all --kernel-cmdline "ip=192.0.2.10::192.0.2.1:255.255.255.0::ens3:none nameserver=192.0.2.100"
もしくは、静的ネットワーク情報を使用して /etc/dracut.conf.d/
ディレクトリーに .conf ファイルを作成します。以下に例を示します。
# cat /etc/dracut.conf.d/static_ip.conf
kernel_cmdline="ip=192.0.2.10::192.0.2.1:255.255.255.0::ens3:none nameserver=192.0.2.100"
初期 RAM ディスクイメージを再生成します。
# dracut -fv --regenerate-all
関連情報
-
clevis-luks-bind(1)
およびdracut.cmdline(7)
の man ページ - ネットワーク起動オプション
- Looking forward to Linux network configuration in the initial ramdisk (initrd)