在 luks 加密的 CentOS 系统上启用 FIPS - 启动密码不再被识别

在 luks 加密的 CentOS 系统上启用 FIPS - 启动密码不再被识别

我有一个 CentOS VM 实例,在安装过程中进行了软件加密。系统启动正常(输入启动解密密码后)。

我的项目需要为 OpenSSL 启用 FIPS,因此我进行了脚步并重新启动。

现在系统不会接受我的启动解密密码(该密码故意很容易输入)。

在没有软件加密的其他相同系统上,使用上述步骤启用 FIPS 可以正常工作,重新启动也没有问题。

编辑

我启动了第三个 CentOS VM 实例,这次没有使用整个系统加密。接下来,我使用 luks 加密了一个卷,然后重新启动。系统提示我输入密码,然后系统正常启动。

接下来,我为 openssl 启用了 fips,重新启动 - 然后收到大量错误,我通常会看到启动密码,但系统无法启动。

我将该系统启动到单用户模式,从内核行拉取 fips=1 并启动。这次启动密码被接受了。

答案1

问题是我在启用 FIPS 之前加密了卷。加雷斯·雷德提到评论,LUKS 使用了一种未经 FIPS 批准的算法,因此当启用 FIPS 时,事情就变得疯狂了。

解决办法是

  1. 启用 FIPS
  2. 加密卷

以该顺序。

本指南在解决问题时也很有用。它很长,还有额外的解释,所以我不会在这里复制粘贴整个内容。以下是要点:

A. 启用 FIPS

  1. 使用以下两种方法之一检查 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)
    
  2. 检查您是否已打开预链接。

    vi /etc/sysconfig/prelink
    
    Change
    PRELINKING=yes
    to
    PRELINKING=no
    
  3. 撤消所有当前预链接

    [root@centos64]# prelink -ua
    
  4. 安装dracut-fips

    [root@centos64]# yum install dracut-fips
    
  5. 重建你的 initramfs

    [root@centos64]# dracut -f      
    
  6. 查找设备路径/boot

    [root@centos64]# df /boot
    Filesystem     1K-blocks   Used Available Use% Mounted on
    /dev/sda2         487652 115447    346605  25% /boot
    
  7. cp /etc/grub.conf /etc/grub.bak

  8. 编辑/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
    
  9. 重启

  10. 检查 FIPS 是否已启用(请参阅上面的步骤 1)。

B. 加密卷

  1. 您确定已启用 FIPS 吗?如果没有,请勿继续 - 返回启用 FIPS并确保该部件正常工作后再继续...

  2. 获取要加密的逻辑卷的设备路径。在我的示例中,这是/dev/mapper/vg_mybox-LogVol03

  3. 备份此卷上的所有数据。它将被销毁。

  4. umount体积。

    就我而言,umount /db_fips

  5. shred -v -n1 /dev/mapper/vg_mybox-LogVol03

  6. 加密卷并设置密码

    cryptsetup -v --verify-passphrase luksFormat /dev/mapper/vg_mybox-LogVol03
    

    笔记:RHEL 最小安装可能默认不包含 cryptsetup。只需yum install cryptsetup获取您所需的内容。CentOS 6.7 的最小软件包集包括cryptsetup

  7. 打开设备并将其别名为您选择的“somename”(在本例中为“db_fips”)

    cryptsetup luksOpen /dev/mapper/vg_mybox-LogVol03 db_fips
    
  8. 验证映射器是否有路径

    [root@centos64]# ls /dev/mapper/db_fips
    
    At this point, treat /dev/mapper/db_fips as you would any ordinary filesystem or device
    
  9. 像平常一样创建文件系统

    [root@centos64]# mkfs -t ext4 /dev/mapper/db_fips
    
  10. 安装并验证

    [root@centos64]# mount /dev/mapper/db_fips /db_fips
    [root@centos64]# date >> /db_fips/today.txt
    
  11. 重要的!!!:注释掉/etc/fstab目标卷的现有条目,以免重新启动时遇到麻烦。:-)

    vi /etc/fstab

    # /dev/mapper/vg_mybox-LogVol03 /some/path ext4 defaults 1,2

  12. 重新启动以确保上述步骤有效。

  13. 获取UUID加密卷

    blkid

    /dev/mapper/vg_mybox-LogVol03: UUID="2e52ffee-7a02-4c91-b6bf-223b05f90ded" TYPE="crypto_LUKS"

  14. 将加密卷添加到/etc/crypttab- 以便可以在启动时解密。您可以在此处指定密码文件,但不建议这样做。 如果要进行远程管理,请在服务器中安装 DRAC(这样您可以在启动期间输入密码)。 crypttab 手册页

    [root@centos64]# vi /etc/crypttab
    
    db_fips UUID="2e52ffee-7a02-4c91-b6bf-223b05f90ded" 
    
  15. 重新启动进行测试。

相关内容