在 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 加密磁區
資料加密處理程序會在主機上產生可能影響效能的負載。
-
在 Shell 提示上,以 root 使用者身分鍵入下列指令,以安裝必要套件:
dnf 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