LUKSフルディスク暗号化:Linuxサーバーセットアップガイド
15分で読めます - 2026年6月5日

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 カーネルモジュールが利用可能であることを確認してください。これらはすべて、Ubuntu、Debian、RHEL、および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 GB | FAT32 | なし |
/boot | 1~2 GB | ext4 / 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=progressLUKS2コンテナを初期化します。 --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内のDropbear | SSH経由での手動ロック解除 | 再起動時には依然として人の手が必要 |
| 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およびフルディスク暗号化を標準でサポートするハードウェアが搭載されています。デプロイの準備が整ったら、専用サーバーを設定してください。

遅いデプロイメントや帯域幅の制限にうんざりしていませんか?FDC Serversは、瞬時の専用電源、グローバルリーチ、あらゆる規模に対応する柔軟なプランを提供します。アップグレードの準備はできましたか?
今すぐパフォーマンスのロックを解除
Linuxトラフィック制御(tc):実践ガイド
tcを使用して、Linux上で帯域幅を制御し、トラフィックを優先順位付けし、入口と出口を形成する。実サーバーのHTB、IFB、DSCP、fq_codelコンフィグ。
12分で読めます - 2026年6月5日
パワフルで無制限のVPSが重要な理由
7分で読めます - 2025年5月9日

ご質問またはカスタムソリューションが必要ですか?
柔軟なオプション
グローバル・リーチ
即時展開
柔軟なオプション
グローバル・リーチ
即時展開