注意:
- 此教程在 Oracle 提供的免费实验室环境中提供。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间的示例值。完成练习后,将这些值替换为特定于云环境的值。
在 Oracle Linux 上使用 LUKS 加密驱动器
简介
Oracle Linux 包括设备映射器加密 (dm-crypt
) 和 Linux 统一密钥设置 (Unified Key Setup,LUKS),用于在块设备上处理加密。
在本练习中,我们将重点介绍使用 LUKS 对设备进行加密的前端工具,它利用 Linux 内核随附的设备映射器支持提供的 dm-crypt
模块。
目标
- 安装
cryptsetup
- 创建加密的卷
- 挂载加密的卷
要求
具有可用磁盘和完全修补的 Oracle Linux 安装的系统。
设置实验室环境
注意:使用免费实验室环境时,请参见 Oracle Linux Lab Basics 了解连接和其他使用说明。
-
如果尚未连接,请打开一个终端并通过 ssh 连接到 ol-node01 实例。
ssh oracle@<ip_address_of_instance>
-
验证块存储卷是否存在。
lsblk -f
空闲实验环境的输出显示两个块设备:
sda
(包含基本 OS)和sdb
(此实验使用)。使用-f
选项可显示文件系统类型 (FSTYPE) 和块普遍唯一标识符 (UUID)。
安装加密程序包
-
如果系统上尚不可用,请安装
cryptsetup
工具。检查是否已安装
cryptsetup
。sudo dnf list --installed cryptsetup
如果未安装,请安装
cryptsetup
。sudo dnf -y install cryptsetup
注:免费实验室环境已安装了
cryptsetup
工具。
使用 LUKS 加密卷
LUKS 和 dm-crypt
可用于块设备、RAID、LVM 物理卷,甚至交换。加密后,这些设备上的数据只能在引导时或挂载时使用正确的凭证进行访问。
空闲实验环境为此步骤提供了一个预先分区的磁盘 /dev/sdb1
。
-
加密磁盘。
sudo cryptsetup -y -v luksFormat /dev/sdb1
输入
YES
继续并提供两次口令短语。口令短语必须包含:- 至少 8 个字符
- 1 位
- 1 个大写字母
- 1 个特殊字符
- 非字典的单词
重要提示:请务必记住键入的密码,因为以后将使用该密码。
输出示例:
[oracle@ol-node01 ~]$ sudo cryptsetup -y -v luksFormat /dev/sdb1 WARNING! ======== This will overwrite data on /dev/sdb1 irrevocably. Are you sure? (Type 'yes' in capital letters): YES Enter passphrase for /dev/sdb1: Verify passphrase: Key slot 0 created. Command successful.
-
打开加密的卷。
此步骤需要一个可以命名任何内容的目标。我们将使用
mysecrets
。sudo cryptsetup -v luksOpen /dev/sdb1 mysecrets
输入请求时在上一步中创建的相同口令短语。
输出示例:
[oracle@ol-node01 ~]$ sudo cryptsetup -v luksOpen /dev/sdb1 mysecrets Enter passphrase for /dev/sdb1: Key slot 0 unlocked. Command successful.
-
再次检查块设备。
lsblk -f
设备
/dev/sdb1
现在将 FSTYPE 显示为 crypto_LUKS ,并显示加密设备卷的映射mysecrets
。
设置加密卷的格式
将数据添加到加密卷之前,需要对其进行格式化。您可以选择不同的文件系统,例如 xfs、ext3、ext4 等。
-
创建文件系统。
sudo mkfs.xfs /dev/mapper/mysecrets
挂载加密的卷
-
创建挂载点。
sudo mkdir -p /u01/my_secret_storage
-
挂载卷。
sudo mount -v /dev/mapper/mysecrets /u01/my_secret_storage
输出显示 SELinux 警告。
输出示例:
[oracle@ol-node01 ~]$ sudo mount -v /dev/mapper/mysecrets /u01/my_secret_storage/ mount: /u01/my_secret_storage does not contain SELinux labels. You just mounted an file system that supports labels which does not contain labels, onto an SELinux box. It is likely that confined applications will generate AVC messages and not be allowed access to this file system. For more details see restorecon(8) and mount(8). mount: /dev/mapper/mysecrets mounted on /u01/my_secret_storage.
这需要重新标记挂载点的 SELinux 安全上下文。
sudo restorecon -vvRF /u01/my_secret_storage
再次运行
mount
命令。sudo mount -v -o remount /u01/my_secret_storage
-
显示已挂载的卷。
lsblk
输出示例:
[oracle@ol-node01 ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 46.6G 0 disk |-sda1 8:1 0 100M 0 part /boot/efi |-sda2 8:2 0 1G 0 part /boot `-sda3 8:3 0 45.5G 0 part |-ocivolume-root 252:0 0 35.5G 0 lvm / `-ocivolume-oled 252:1 0 10G 0 lvm /var/oled sdb 8:16 0 50G 0 disk `-sdb1 8:17 0 2G 0 part `-mysecrets 252:2 0 2G 0 crypt /u01/my_secret_storage
显示 LUKS 卷详细信息
查看 LUKS 标头、数据段、密钥插槽和版本信息。
-
转储 LUKS 详细信息。
sudo cryptsetup luksDump /dev/sdb1
输出示例:
LUKS header information Version: 2 Epoch: 3 Metadata area: 16384 [bytes] Keyslots area: 16744448 [bytes] UUID: 4ccea398-5864-45a9-b274-173c8ebc3356 Label: (no label) Subsystem: (no subsystem) Flags: (no flags) Data segments: 0: crypt offset: 16777216 [bytes] length: (whole device) cipher: aes-xts-plain64 sector: 512 [bytes] Keyslots: 0: luks2 Key: 512 bits Priority: normal Cipher: aes-xts-plain64 Cipher key: 512 bits PBKDF: argon2i Time cost: 10 Memory: 1048576 Threads: 4 Salt: ee d2 c7 5b 05 43 0f 0a 12 60 da b5 87 19 4a 6f 06 57 a2 31 b1 dd bb 60 74 53 95 b2 ca 2f ad 4b AF stripes: 4000 AF hash: sha256 Area offset:32768 [bytes] Area length:258048 [bytes] Digest ID: 0 Tokens: Digests: 0: pbkdf2 Hash: sha256 Iterations: 243628 Salt: 89 6c 8b aa 37 af 58 e9 26 49 c5 e5 db 2d 54 ea f8 7a c2 89 0e ab ed 48 74 a5 23 d7 b0 e6 9c 87 Digest: 4a 2b 25 76 c5 85 1a 6c a9 28 0c ee d0 c7 76 eb e1 4c ee 9c 5b 9a e2 d0 95 6e 1f 6e bb 1b 03 d1
有关详细信息,请参阅 cryptsetup(8)
手册页、Oracle 文档或上游常见问题解答。
详细信息
请参阅其他相关资源:
更多学习资源
在 docs.oracle.com/learn 上浏览其他实验室,或者在 Oracle Learning YouTube 频道上访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Encrypt Drives using LUKS on Oracle Linux
F60523-01
July 2022
Copyright © 2022, Oracle and/or its affiliates.