![在 luks 加密的 CentOS 系统上启用 FIPS - 启动密码不再被识别](https://linux22.com/image/1464169/%E5%9C%A8%20luks%20%E5%8A%A0%E5%AF%86%E7%9A%84%20CentOS%20%E7%B3%BB%E7%BB%9F%E4%B8%8A%E5%90%AF%E7%94%A8%20FIPS%20-%20%E5%90%AF%E5%8A%A8%E5%AF%86%E7%A0%81%E4%B8%8D%E5%86%8D%E8%A2%AB%E8%AF%86%E5%88%AB.png)
我有一个 CentOS VM 实例,在安装过程中进行了软件加密。系统启动正常(输入启动解密密码后)。
我的项目需要为 OpenSSL 启用 FIPS,因此我进行了脚步并重新启动。
现在系统不会接受我的启动解密密码(该密码故意很容易输入)。
在没有软件加密的其他相同系统上,使用上述步骤启用 FIPS 可以正常工作,重新启动也没有问题。
编辑
我启动了第三个 CentOS VM 实例,这次没有使用整个系统加密。接下来,我使用 luks 加密了一个卷,然后重新启动。系统提示我输入密码,然后系统正常启动。
接下来,我为 openssl 启用了 fips,重新启动 - 然后收到大量错误,我通常会看到启动密码,但系统无法启动。
我将该系统启动到单用户模式,从内核行拉取 fips=1 并启动。这次启动密码被接受了。
答案1
问题是我在启用 FIPS 之前加密了卷。加雷斯·雷德提到评论,LUKS 使用了一种未经 FIPS 批准的算法,因此当启用 FIPS 时,事情就变得疯狂了。
解决办法是
- 启用 FIPS
- 加密卷
以该顺序。
本指南在解决问题时也很有用。它很长,还有额外的解释,所以我不会在这里复制粘贴整个内容。以下是要点:
A. 启用 FIPS
使用以下两种方法之一检查 FIPS 是否启用:
cat /proc/sys/crypto/fips_enabled 0 = not enabled 1 = enabled openssl md5 /any/file valid hash = not enabled "Error setting digest md5" = enabled (likely)
检查您是否已打开预链接。
vi /etc/sysconfig/prelink Change PRELINKING=yes to PRELINKING=no
撤消所有当前预链接
[root@centos64]# prelink -ua
安装
dracut-fips
[root@centos64]# yum install dracut-fips
重建你的 initramfs
[root@centos64]# dracut -f
查找设备路径
/boot
[root@centos64]# df /boot Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 487652 115447 346605 25% /boot
cp /etc/grub.conf /etc/grub.bak
编辑
/etc/grub.conf
Add in the "fips=1" and "boot=/dev/***" lines to the kernel command line Example: kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg_centos6464bittempl-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_LVM_LV=vg_centos6464bittempl/lv_swap rd_LVM_LV=vg_centos6464bittempl/lv_root rd_NO_MD crashkernel=auto SYSFONT=latarcyrheb-sun16 rd_NO_DM rhgb quiet fips=1 boot=/dev/sda2
重启
检查 FIPS 是否已启用(请参阅上面的步骤 1)。
B. 加密卷
您确定已启用 FIPS 吗?如果没有,请勿继续 - 返回启用 FIPS并确保该部件正常工作后再继续...
获取要加密的逻辑卷的设备路径。在我的示例中,这是
/dev/mapper/vg_mybox-LogVol03
备份此卷上的所有数据。它将被销毁。
umount
体积。就我而言,
umount /db_fips
shred -v -n1 /dev/mapper/vg_mybox-LogVol03
加密卷并设置密码
cryptsetup -v --verify-passphrase luksFormat /dev/mapper/vg_mybox-LogVol03
笔记:RHEL 最小安装可能默认不包含 cryptsetup。只需
yum install cryptsetup
获取您所需的内容。CentOS 6.7 的最小软件包集包括cryptsetup
。打开设备并将其别名为您选择的“somename”(在本例中为“db_fips”)
cryptsetup luksOpen /dev/mapper/vg_mybox-LogVol03 db_fips
验证映射器是否有路径
[root@centos64]# ls /dev/mapper/db_fips At this point, treat /dev/mapper/db_fips as you would any ordinary filesystem or device
像平常一样创建文件系统
[root@centos64]# mkfs -t ext4 /dev/mapper/db_fips
安装并验证
[root@centos64]# mount /dev/mapper/db_fips /db_fips [root@centos64]# date >> /db_fips/today.txt
重要的!!!:注释掉
/etc/fstab
目标卷的现有条目,以免重新启动时遇到麻烦。:-)
vi /etc/fstab
# /dev/mapper/vg_mybox-LogVol03 /some/path ext4 defaults 1,2
重新启动以确保上述步骤有效。
获取
UUID
加密卷blkid
/dev/mapper/vg_mybox-LogVol03: UUID="2e52ffee-7a02-4c91-b6bf-223b05f90ded" TYPE="crypto_LUKS"
将加密卷添加到
/etc/crypttab
- 以便可以在启动时解密。您可以在此处指定密码文件,但不建议这样做。 如果要进行远程管理,请在服务器中安装 DRAC(这样您可以在启动期间输入密码)。 crypttab 手册页[root@centos64]# vi /etc/crypttab db_fips UUID="2e52ffee-7a02-4c91-b6bf-223b05f90ded"
重新启动进行测试。