RHEL における LUKS を使用したフル・ディスク暗号化の実現
Linux® Unified Key Setup (LUKS) を使用して RHEL サーバー上のパーティションを暗号化することができます。これは、モバイルコンピュータやリムーバブルメディアを使用する際に重要です。 LUKSでは、パーティションの大量暗号化に使用されるメインキーを復号するために、複数のユーザーキーを使用することができます。 以下の説明は、RHEL バージョン RHEL6 以降に適用されます。
以下のステップでは、サーバーが、フォーマット設定もマウントもされていない新規の非暗号化 IBM Cloud® Block Storage for Classic ボリュームにアクセスできることを前提としています。 Block Storage for Classic を Linux® ホストに接続する方法の詳細については、以下のトピックのいずれかをご覧ください。
- Red Hat Enterprise Linux® iSCSI ボリュームをマウントする。
- CloudLinuxに iSCSI ボリュームをマウントする。
- Ubuntuに iSCSI ボリュームをマウントする。
すべての新規 Block Storage for Classic は、プロバイダー管理の保存データ暗号化を使用して自動的にプロビジョンされます。 詳しくは、データの保護 - プロバイダー管理の保存データの暗号化を参照してください。
LUKS にある機能
- LUKSはブロックデバイス全体を暗号化するため、リムーバブルストレージメディアやノートパソコンのディスクドライブなどのモバイルデバイスのコンテンツ保護に適しています。
- 暗号化ブロック・デバイスは、基礎となる内容が任意なので、スワップ・デバイスの暗号化に役立ちます。 暗号化は、データ・ストレージ用の特殊なフォーマットのブロック・デバイスを使用する特定のデータベースにも役立ちます。
- LUKSは既存のデバイスマッパーカーネルサブシステムを使用しています。
- LUKSはパスフレーズを強化し、辞書攻撃を防止します。
- LUKS には複数の鍵スロットが含まれているため、ユーザーはバックアップ鍵またはパスフレーズを追加できます。
LUKS にない機能
- LUKSでは、8人以上のユーザーが同じデバイスに個別のアクセスキーを持つ必要があるアプリケーションは許可されていません。
- LUKS は、ファイル・レベルの暗号化を必要とするアプリケーションでは機能しません。 詳細については、 RHEL セキュリティガイドを参照してください。
エンデュランス Block Storage for Classic を使用した LUKS 暗号化ボリュームのセットアップ
データ暗号化のプロセスにより、パフォーマンスに影響を与える可能性のあるホストへの負荷が発生します。
-
root としてシェル・プロンプトに以下のコマンドを入力し、必要なパッケージをインストールします。
yum install cryptsetup-luks
-
ディスク ID を取得します。
fdisk –l | grep /dev/mapper
-
リスト内で該当するボリュームを見つけます。
-
ブロック・デバイスを暗号化します。
-
このコマンドはボリュームを初期化します。パスフレーズを設定することができます。
cryptsetup -y -v luksFormat /dev/mapper/3600a0980383034685624466470446564
-
YES
(すべて大文字)で返信してください。 -
これにより、デバイスが暗号化されたボリュームとして表示されます。
$ blkid | grep LUKS /dev/mapper/3600a0980383034685624466470446564: UUID="46301dd4-035a-4649-9d56-ec970ceebe01" TYPE="crypto_LUKS"
-
-
ボリュームを開き、マッピングを作成します。
cryptsetup luksOpen /dev/mapper/3600a0980383034685624466470446564 cryptData
-
パスフレーズを入力します。
-
マッピングを確認し、暗号化されたボリュームのステータスを表示します。
$ cryptsetup -v status cryptData /dev/mapper/cryptData is active. type: LUKS1 cipher: aes-cbc-essiv:sha256 keysize: 256 bits device: /dev/mapper/3600a0980383034685624466470446564 offset: 4096 sectors size: 41938944 sectors mode: read/write Command successful
-
暗号化されたデバイス上の
/dev/mapper/cryptData
にランダム・データを書き込みます。 この措置により、外部からはランダムなデータとして見えるため、利用パターンの開示を防ぐことができます。 このステップには少し時間がかかる場合があります。shred -v -n1 /dev/mapper/cryptData
-
ボリュームをフォーマットします。
mkfs.ext4 /dev/mapper/cryptData
-
ボリュームをマウントします。
mkdir /cryptData
mount /dev/mapper/cryptData /cryptData
df -H /cryptData
暗号化されたボリュームの安全なアンマウントおよびクローズ
umount /cryptData
cryptsetup luksClose cryptData
既存の LUKS 暗号化区画の再マウントおよびマウント
$ cryptsetup luksOpen /dev/mapper/3600a0980383034685624466470446564 cryptData
Enter the password previously provided.
$ mount /dev/mapper/cryptData /cryptData
$ df -H /cryptData
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvdb 202:16 0 2G 0 disk
└─xvdb1 202:17 0 2G 0 part [SWAP]
xvda 202:0 0 25G 0 disk
├─xvda1 202:1 0 256M 0 part /boot
└─xvda2 202:2 0 24.8G 0 part /
sda 8:0 0 20G 0 disk
└─3600a0980383034685624466470446564 (dm-0) 253:0 0 20G 0 mpath
└─cryptData (dm-1) 253:1 0 20G 0 crypt /cryptData
sdb 8:16 0 20G 0 disk
└─3600a0980383034685624466470446564 (dm-0) 253:0 0 20G 0 mpath
└─cryptData (dm-1) 253:1 0 20G 0 crypt /cryptData