LUKSフルディスク暗号化:Linuxサーバーセットアップガイド

15分で読めます - 2026年6月5日

hero section cover
目次
  • LUKS フルディスク暗号化サーバーガイド
  • なぜLUKS2なのか、そして最初に確認すべきこと
  • ディスク構成
  • LVMを使用したLUKSの設定
  • 鍵管理とリモートアンロック
  • セキュリティ強化とロックアウトの回避
共有

LUKS2 のセットアップ、LVM のレイアウト、鍵の管理、Tang と TPM を使ったリモート・アンロック、そしてハードニングについて説明しています。

LUKS フルディスク暗号化サーバーガイド

LUKS(Linux Unified Key Setup)は、Linux ブロックデバイス全体を暗号化するため、マスターキーがなければその内容を読み取ることができません。 盗難に遭ったドライブ、廃棄されたシャーシ、置き忘れたバックアップディスク――LUKSが正しく設定されていれば、これらによってデータが漏洩することはありません。本記事では、LVMレイアウト、鍵管理、リモートアンロック、およびユーザーが自身のデータにアクセスできなくなるような障害モードを含め、サーバーへのLUKSフルディスク暗号化の導入方法について解説します。

ここで参照する実装は、CPUにAES-NIを搭載したLinuxサーバー上で、暗号化コンテナ内にLVMを配置したLUKS2です。この組み合わせは、あらゆる最新のワークロードに対応し、優れたパフォーマンスを発揮するとともに、HIPAA、PCI-DSS、GDPR、SOC 2における保存データの要件を満たします。

なぜLUKS2なのか、そして最初に確認すべきこと

LUKSはdm-cryptを使用してブロックデバイス層で暗号化を行い、マスターキーはLUKSヘッダー内のキースロットに格納されます。この分離が重要です。ディスクを再暗号化することなく、パスフレーズのローテーションや新しいキーの追加が可能です。

LUKS2が現在のデフォルトです。最大32のキースロット、JSON形式のメタデータ、オンライン再暗号化、および --integrity フラグによる認証付き暗号化をサポートしています。LUKS1は8つのキースロットをサポートしており、古いシステムでは問題ありませんが、新規導入ではLUKS2から始めるべきです。

最新のハードウェアでは、AES-NI によるパフォーマンスのオーバーヘッドは通常 5% 未満です。開始前に確認してください:

grep -o aes /proc/cpuinfo | head -1
cryptsetup benchmark

もし grep が何も返さない場合、お使いの CPU には AES-NI が搭載されておらず、高負荷の I/O 環境下では暗号化処理が CPU ボトルネックとなります。 cryptsetup benchmark は暗号ごとのスループットを表示するため、ハードウェアがサポートする中で最も高速なものを選択できます。また、cryptsetupがインストールされており、 dm-crypt カーネルモジュールが利用可能であることを確認してください。これらはすべて、UbuntuDebianRHEL、およびArchにデフォルトで同梱されています。

ディスク構成

暗号化されないパーティションは2つあります。EFIシステムパーティション(512 MB、FAT32)と /boot (1~2 GB、ext4 または xfs)です。GRUB は、パスフレーズの入力を求める前に、これら両方を読み込む必要があります。それ以外のすべては LUKS コンテナ内に配置されます。

推奨されるレイアウトは、LUKS 内の LVM です。1 つの LUKS コンテナに LVM ボリュームグループを格納し、root、swap、およびデータパーティション用の論理ボリュームを作成します。これにより、LVM メタデータは暗号化されたままになり、LUKS レイヤーに触れることなくボリュームのサイズ変更やスナップショットを作成することができます。 LUKS-on-LVMも機能しますが、その場合はボリュームグループ構造が公開されてしまいます。

パーティションサイズファイルシステム暗号化
EFI システム512 MB ~ 1 GBFAT32なし
/boot1~2 GBext4 / xfsいいえ
LUKSコンテナ空き容量LUKS2はい
LVMルート20~100 GB以上ext4 / xfsはい(LUKS内)
LVMスワップRAMと同容量スワップはい(LUKS内)

ルートボリュームの安全なデフォルトは ext4 です。xfs は大容量ファイルや並列書き込みへの対応に優れており、メディア、ML、データベースサーバーではこれが重要です。SSD や NVMe を使用する場合は、 discard オプションを追加して /etc/crypttab にオプションを追加して TRIM を有効にしてください。TRIM はどのセクタが使用中かを明らかにするため、わずかな情報漏洩となります。ほとんどのワークロードでは、ウェアレベリングのメリットがそれを上回ります。脅威モデルにデバイスのフォレンジック分析が含まれる場合は、無効にしておいてください。

LVMを使用したLUKSの設定

対象ディスクを次のように特定します lsblk を使用して対象ディスクを特定し、既存のメタデータを消去します:

wipefs -a /dev/sdX

必要に応じて、ランダムなデータで上書きし、暗号化されたブロックが空き領域と区別できないようにします:

dd if=/dev/urandom of=/dev/sdX bs=1M status=progress

LUKS2コンテナを初期化します。 --sector-size 4096 を使用します(4K物理セクタを持つNVMeおよび最新のSSDの場合):

cryptsetup luksFormat --type luks2 --sector-size 4096 /dev/sdX
cryptsetup luksOpen /dev/sdX cryptdata

ディスクにデータを書き込む前に、直ちにヘッダーをバックアップします:

cryptsetup luksHeaderBackup /dev/sdX --header-backup-file luks-header-backup.img

ロック解除されたコンテナ上にLVMを作成し、論理ボリュームをフォーマットします:

pvcreate /dev/mapper/cryptdata
vgcreate vg_secure /dev/mapper/cryptdata
lvcreate -L 50G -n lv_root vg_secure
lvcreate -L 8G -n lv_swap vg_secure
 
mkfs.xfs /dev/vg_secure/lv_root
mkswap /dev/vg_secure/lv_swap

にエントリを追加します /etc/crypttab にエントリを追加します。 /dev/sdX(再起動のたびに変更される可能性があるため)。 blkid /dev/sdX:

cryptdata UUID=<your-uuid> none luks,discard

その後、 /etc/fstab:

/dev/vg_secure/lv_root  /  xfs  defaults,noatime  0 1

ブート時に暗号化フックが読み込まれるよう、initramfsを再生成します:

# Debian/Ubuntu
update-initramfs -u -k all
 
# RHEL/Fedora
dracut -f --regenerate-all

再起動し、パスフレーズを入力して、 cryptsetup status cryptdata および lsblk -f。後者のコマンドでは、 crypto_LUKS と表示されるはずです。

鍵管理とリモートアンロック

LUKS2は32個のキースロットをサポートしています。最初から少なくとも3つを使用してください:管理者パスフレーズ、オフラインで保管するリカバリキー(印刷して施錠された場所に保管するか、金庫内の暗号化されたUSBに保存)、およびセカンダリデータボリュームの自動ロック解除用のキーファイルです。 非ASCII文字は、ブートプロンプトでのキーボードレイアウトの問題を引き起こし、そのデバッグには多大な労力を要するため、95種類の印刷可能なASCII文字に限定してください。アクセス権を持つメンバーがチームを離れる際は、必ず管理者パスフレーズを変更してください。

アクティブなスロットを表示するには cryptsetup luksDump /dev/sdXでアクティブなスロットを確認し、 cryptsetup luksAddKeyでキーを追加し、 cryptsetup luksKillSlotでキーを無効化します。キーファイルは厳格なアクセス権限で保護してください:

chmod 0400 /etc/luks/keyfile.bin

遠隔データセンター内のヘッドレスサーバーの場合、パスフレーズの入力プロンプトが問題となります。これに対処する3つの方法:

方法適しているケーストレードオフ
initramfs内のDropbearSSH経由での手動ロック解除再起動時には依然として人の手が必要
Clevis + Tang (NBDE)信頼できるネットワーク上での自動ロック解除起動にはサーバーがTangサーバーに接続できる必要がある
systemd-cryptenroll 経由の TPM2ハードウェアに依存した自動化ファームウェアの更新によりPCR値が変更され、ロックアウトされる可能性がある

Dropbearはinitramfs内で小型のSSHサーバーを実行します。 起動後にSSHで接続し、パスフレーズを手動で入力します。ClevisとTangの組み合わせでは、ネットワーク依存のディスク暗号化が使用されます。信頼されたネットワーク上のTangサーバーに接続できれば、サーバーは自動的にロックを解除します。Tangはユーザーの鍵を保存せず、McCallum-Relyea交換の片側を提供します。複数のTangサーバーを使用し、 sss pinを使用して複数のTangサーバーを利用することで、1台がオフラインでもロック解除が可能になります。TPM 2.0バインディングでは systemd-cryptenroll を使用すると、鍵がPCR 7(セキュアブート状態)に紐付けられるため、ファームウェアとブートローダーが改ざんされていない場合にのみサーバーはロックを解除します。ファームウェアの更新によりPCR値が変更されるため、TPMを使用する際は常にパスフレーズによる鍵スロットをフォールバックとして保持してください。

セキュリティ強化とロックアウトの回避

20文字以上のパスフレーズを使用してください。 --integrity を有効にしてください luksFormat を有効にしてください。これには書き込み増幅のコストが伴うため、事前にベンチマークを実施してください。

LUKS コンテナをマシン間で複製しないでください。ボリュームキーも一緒にコピーされるため、一方のホストでパスフレーズを変更しても、もう一方のホストは保護されません。各ディスクを個別に再フォーマットしてください。

安全な廃棄処理のためには、 cryptsetup erase /dev/sdX 数ミリ秒ですべてのキースロットを消去し、物理的に破壊しない限りディスクを復元不可能にします。これだけでも、デフォルトですべてを暗号化すべきという強力な根拠となります。

一般的な障害モード:

症状考えられる原因対処法
パスフレーズ入力画面で起動が停止するキーボードレイアウトの不一致レイアウトを切り替えるか、リカバリキーを使用する
「デバイスは有効なLUKSデバイスではありません」デバイスのパスが間違っている確認してください lsblk パーティションかディスク全体かを確認してください
起動時にキーボードが反応しないInitramfsのフック順序配置 keyboard の前に encrypt の前に mkinitcpio.conf
GRUBがパスフレーズのプロンプトをスキップするGRUB_ENABLE_CRYPTODISK 設定されていない設定 GRUB_ENABLE_CRYPTODISK=y/etc/default/grub、GRUBを再インストール
「ルートデバイスが見つかりませんでした」欠落 lvm2 または encrypt フックフックを追加して実行 mkinitcpio -P

最も重大な障害モードはヘッダーの破損です。LUKSヘッダーが失われたり破損したりすると、データは失われます。ヘッダーのバックアップから復元する以外、回復手段はありません。コピーを別のメディアに保存し、理想的には2か所に保管してください。決して暗号化されたディスク自体には保存しないでください。重要度の低いセカンダリボリュームについては、 nofail/etc/crypttab を追加し、マウントに失敗してもブートがハングしないようにしてください。

FDCの専用サーバーには、AES-NIおよびフルディスク暗号化を標準でサポートするハードウェアが搭載されています。デプロイの準備が整ったら、専用サーバーを設定してください

background image
サーバーが成長を妨げていませんか?

遅いデプロイメントや帯域幅の制限にうんざりしていませんか?FDC Serversは、瞬時の専用電源、グローバルリーチ、あらゆる規模に対応する柔軟なプランを提供します。アップグレードの準備はできましたか?

今すぐパフォーマンスのロックを解除

ブログ

今週の特集

その他の記事
Linuxトラフィック制御(tc):実践ガイド

Linuxトラフィック制御(tc):実践ガイド

tcを使用して、Linux上で帯域幅を制御し、トラフィックを優先順位付けし、入口と出口を形成する。実サーバーのHTB、IFB、DSCP、fq_codelコンフィグ。

12分で読めます - 2026年6月5日

パワフルで無制限のVPSが重要な理由

7分で読めます - 2025年5月9日

その他の記事
background image

ご質問またはカスタムソリューションが必要ですか?

icon

柔軟なオプション

icon

グローバル・リーチ

icon

即時展開

icon

柔軟なオプション

icon

グローバル・リーチ

icon

即時展開