在 RHEL 中使用 LUKS 實現全磁碟加密

瞭解如何透過 Linux 的「統一金鑰設定」(LUKS)以及多組使用者金鑰,在 Block Storage for Classic 分割區上實現全磁碟加密,以提升資料安全性。

您可以使用 Linux® Unified Key Setup (LUKS) 加密 Block Storage for Classic 磁碟區上的磁碟分割。 使用 LUKS,可以使用多個使用者金鑰來解密用於大量加密分割區的主金鑰。 下列指示經驗證適用於 RHEL 版本 8 或更新版本。

這些步驟假設伺服器可以存取尚未格式化或裝載的全新未加密 IBM Cloud® Block Storage for Classic 磁區。 如需更多關於將 Block Storage for Classic 連接到 Linux® 主機的資訊,請參閱下列其中一個主題。

所有新的 Block Storage for Classic 都會自動配置由供應商管理的靜態加密功能。 如需相關資訊,請參閱保護資料安全 - 提供者管理的靜態加密 (Encryption-At-Rest)

LUKS 可以執行的作業

  • LUKS 會對整個區塊裝置進行加密,因此非常適合用於保護行動裝置(例如可移除式儲存媒體或筆記型電腦硬碟)中的內容。
  • 已加密區塊裝置的基礎內容是任意內容,這使它有助於加密交換裝置。 加密也適用於使用特殊格式的區塊裝置進行資料儲存的特定資料庫。
  • LUKS 使用現有的裝置映射器核心子系統。
  • LUKS 提供密碼短語強化功能,可防範字典攻擊。
  • LUKS 包含多個金鑰槽,因此使用者可以新增備份金鑰或通行詞組。

LUKS 不會執行的作業

  • LUKS 不允許應用程式要求大量(超過八位)使用者對同一台裝置擁有各自不同的存取金鑰。
  • LUKS 不適用於需要檔案層次加密的應用程式。 如需詳細資訊,請參閱 RHEL 安全指南

使用耐久性 Block Storage for Classic 來設定 LUKS 加密磁區

資料加密處理程序會在主機上產生可能影響效能的負載。

  1. 在 Shell 提示上,以 root 使用者身分鍵入下列指令,以安裝必要套件:

    dnf install cryptsetup-luks
    
  2. 取得磁碟 ID:

    fdisk –l | grep /dev/mapper
    
  3. 在清單中找出您的磁區。

  4. 加密區塊裝置。

    1. 這個指令會起始設定磁區,您可以設定通行詞組。
       cryptsetup -y -v luksFormat /dev/mapper/3600a0980383034685624466470446564
    
    1. 請以「YES」(全部大寫)回覆。

    2. 裝置現在會顯示為加密磁區:

       $ 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