在RHEL中使用LUKS实现全盘加密
您可以使用 Linux® 统一密钥设置(LUKS)对RHEL服务器上的分区进行加密,这在移动计算机和可移动媒体方面非常重要。 使用LUKS,多个用户密钥可以用于解密主密钥,而主密钥用于对分区进行批量加密。 以下指示信息适用于 RHEL V RHEL6 或更高版本。
以下步骤假定服务器可以访问尚未格式化或安装的新的未加密 IBM Cloud® Block Storage for Classic 卷。 有关将 Block Storage for Classic 连接到 Linux® 主机的更多信息,请参阅以下主题。
所有新的 Block Storage for Classic 都会自动供应提供者管理的静态加密。 有关更多信息,请参阅确保数据安全 - 提供者管理的静态加密。
LUKS 可执行以下操作
- LUKS可以对整个块设备进行加密,因此适用于保护移动设备的内容,例如可移动存储介质或笔记本电脑的磁盘驱动器。
- 加密块设备的底层内容是任意的,因此对于加密交换设备非常有用。 该加密对于某些使用特殊格式化的块设备进行数据存储的数据库也很有用。
- LUKS使用现有的设备映射器内核子系统。
- LUKS提供密码强化功能,可防止字典攻击。
- LUKS 包含多个密钥槽,因此用户可以添加备份密钥或口令。
LUKS 不执行以下操作
- LUKS不允许需要多个(超过八个)用户拥有不同访问密钥访问同一设备的应用程序。
- LUKS 不适用于需要文件级加密的应用程序。 更多信息,请参阅 《 RHEL安全指南 》。
使用耐久性 Block Storage for Classic 设置 LUKS 加密卷
数据加密过程会在主机上产生负载,这可能会影响性能。
-
在 shell 提示符处以 root 用户身份输入以下命令来安装必需的包:
yum install cryptsetup-luks
-
获取磁盘标识:
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