DRBDのセキュアブート対応

DRBDはカーネルモジュールとして提供されています。
最新のバージョンではOSのセキュアブートにも対応しており、デジタル署名を登録することでソフトウェアとしての安全性を保証できます。
DRBDのユーザーガイドに「セキュアブート/カーネルモジュールの署名」の項目がありますので、そちらも参照ください。

今回の記事ではセキュアブート環境でDBRDを利用する手順を紹介します。

1.環境

今回はセキュアブートができる環境としてvSphere7.0を使用しました。OSはRHEL8.4の互換性があるCentOS8.4を使っています。

DRBDは9.0.25バージョンより新しいバージョンを使います。

ハードウェアや仮想環境によってセキュアブートの設定が出来ないこともあります。

2.署名の手順

DRBDをインストールしたのち、mokutilコマンドでDRBDの公開署名鍵をを登録します。鍵はDRBDのパッケージに含まれて/etc/pki/linbit/SECURE-BOOT-KEY-linbit.com.derとして保存されます。登録のコマンドは次になります。

[root@node2 ~]# mokutil --import /etc/pki/linbit/SECURE-BOOT-KEY-linbit.com.der
input password: 
input password again: 

公開鍵をインポートする時にパスワードを登録します。このパスワードは次回のシステム再起動の時に、ブート画面に表示されるMOKリストの管理画面で使います。

OSを再起動すると通常のブート画面に変わって次のような画面が表示されます。

この画面は10秒ほどしか表示されません。時間切れになると通常のブート画面になります。

何かキーボードから文字を入力すると次の画面に変わります。

Enroll MOKを選ぶと署名すべきカーネルモジュールのパスワード入力画面になります。

パスワードを入力後、いったん再起動します。パスワードを登録するとこの画面は表示されなくなります。

3.DRBDモジュールの読み込み

セキュアブートが有効になっている環境では、署名されていないカーネルモジュールは読み込みができません。次の実行例は登録が出来ない場合の表示です。

[root@node1 ~]# modprobe drbd
modprobe: ERROR: could not insert 'drbd': Required key not available

mokutil –importで公開署名鍵を登録して、MOK managementでパスワードが登録できると、次のように登録ができます。

[root@node1 ~]# modprobe drbd
[root@node1 ~]# lsmod | grep drbd
drbd                  655360  0
libcrc32c              16384  5 nf_conntrack,nf_nat,nf_tables,xfs,drbd

なお、LINBIT社の見解では公開署名鍵は将来も変わることがなく、登録した鍵はDRBDのバージョンアップで再登録する必要はないとのことです。

セキュアブート環境でDRBDを利用する場合は、公開署名鍵を使った署名を忘れないようにお願いします。