IBM Cloud Docs
RHEL における LUKS を使用したフル・ディスク暗号化の実現

RHEL における LUKS を使用したフル・ディスク暗号化の実現

Linux® Unified Key Setup (LUKS) を使用して RHEL サーバー上のパーティションを暗号化することができます。これは、モバイルコンピュータやリムーバブルメディアを使用する際に重要です。 LUKSでは、パーティションの大量暗号化に使用されるメインキーを復号するために、複数のユーザーキーを使用することができます。 以下の説明は、RHEL バージョン RHEL6 以降に適用されます。

以下のステップでは、サーバーが、フォーマット設定もマウントもされていない新規の非暗号化 IBM Cloud® Block Storage for Classic ボリュームにアクセスできることを前提としています。 Block Storage for Classic を Linux® ホストに接続する方法の詳細については、以下のトピックのいずれかをご覧ください。

すべての新規 Block Storage for Classic は、プロバイダー管理の保存データ暗号化を使用して自動的にプロビジョンされます。 詳しくは、データの保護 - プロバイダー管理の保存データの暗号化を参照してください。

LUKS にある機能

  • LUKSはブロックデバイス全体を暗号化するため、リムーバブルストレージメディアやノートパソコンのディスクドライブなどのモバイルデバイスのコンテンツ保護に適しています。
  • 暗号化ブロック・デバイスは、基礎となる内容が任意なので、スワップ・デバイスの暗号化に役立ちます。 暗号化は、データ・ストレージ用の特殊なフォーマットのブロック・デバイスを使用する特定のデータベースにも役立ちます。
  • LUKSは既存のデバイスマッパーカーネルサブシステムを使用しています。
  • LUKSはパスフレーズを強化し、辞書攻撃を防止します。
  • LUKS には複数の鍵スロットが含まれているため、ユーザーはバックアップ鍵またはパスフレーズを追加できます。

LUKS にない機能

  • LUKSでは、8人以上のユーザーが同じデバイスに個別のアクセスキーを持つ必要があるアプリケーションは許可されていません。
  • LUKS は、ファイル・レベルの暗号化を必要とするアプリケーションでは機能しません。 詳細については、 RHEL セキュリティガイドを参照してください。

エンデュランス Block Storage for Classic を使用した LUKS 暗号化ボリュームのセットアップ

データ暗号化のプロセスにより、パフォーマンスに影響を与える可能性のあるホストへの負荷が発生します。

  1. root としてシェル・プロンプトに以下のコマンドを入力し、必要なパッケージをインストールします。

    yum install cryptsetup-luks
    
  2. ディスク ID を取得します。

    fdisk –l | grep /dev/mapper
    
  3. リスト内で該当するボリュームを見つけます。

  4. ブロック・デバイスを暗号化します。

    1. このコマンドはボリュームを初期化します。パスフレーズを設定することができます。

      cryptsetup -y -v luksFormat /dev/mapper/3600a0980383034685624466470446564
      
    2. YES (すべて大文字)で返信してください。

    3. これにより、デバイスが暗号化されたボリュームとして表示されます。

      $ blkid | grep LUKS
      /dev/mapper/3600a0980383034685624466470446564: UUID="46301dd4-035a-4649-9d56-ec970ceebe01" TYPE="crypto_LUKS"
      
  5. ボリュームを開き、マッピングを作成します。

    cryptsetup luksOpen /dev/mapper/3600a0980383034685624466470446564 cryptData
    
  6. パスフレーズを入力します。

  7. マッピングを確認し、暗号化されたボリュームのステータスを表示します。

    $ 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
    
  8. 暗号化されたデバイス上の /dev/mapper/cryptData にランダム・データを書き込みます。 この措置により、外部からはランダムなデータとして見えるため、利用パターンの開示を防ぐことができます。 このステップには少し時間がかかる場合があります。

    shred -v -n1 /dev/mapper/cryptData
    
  9. ボリュームをフォーマットします。

    mkfs.ext4 /dev/mapper/cryptData
    
  10. ボリュームをマウントします。

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