Vulnerability Discussion
Use of weak or untested encryption algorithms undermines the purposes of using encryption to protect data. The operating system must implement cryptographic modules adhering to the higher standards approved by the federal government since this provides assurance they have been tested and validated.
RHEL 8 utilizes GRUB 2 as the default bootloader. Note that GRUB 2 command-line parameters are defined in the "kernelopts" variable of the /boot/grub2/grubenv file for all kernel boot entries. The command "fips-mode-setup" modifies the "kernelopts" variable, which in turn updates all kernel boot entries.
The fips=1 kernel option needs to be added to the kernel command line during system installation so that key generation is done with FIPS-approved algorithms and continuous monitoring tests in place. Users must also ensure the system has plenty of entropy during the installation process by moving the mouse around, or if no mouse is available, ensuring that many keystrokes are typed. The recommended amount of keystrokes is 256 and more. Less than 256 keystrokes may generate a nonunique key.
Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000125-GPOS-00065, SRG-OS-000396-GPOS-00176, SRG-OS-000423-GPOS-00187, SRG-OS-000478-GPOS-00223
Check
Verify the operating system implements DOD-approved encryption to protect the confidentiality of remote access sessions.
Check to see if FIPS mode is enabled with the following command:
$ fips-mode-setup --check
FIPS mode is enabled
If FIPS mode is "enabled", check to see if the kernel boot parameter is configured for FIPS mode with the following command:
$ sudo grub2-editenv list | grep fips
kernelopts=root=/dev/mapper/rhel-root ro crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet fips=1 boot=UUID=8d171156-cd61-421c-ba41-1c021ac29e82
If the kernel boot parameter is configured to use FIPS mode, check to see if the system is in FIPS mode with the following command:
$ sudo cat /proc/sys/crypto/fips_enabled
1
If FIPS mode is not "on", the kernel boot parameter is not configured for FIPS mode, or the system does not have a value of "1" for "fips_enabled" in "/proc/sys/crypto", this is a finding.
Fix
Configure the operating system to implement DOD-approved encryption by following the steps below:
To enable strict FIPS compliance, the fips=1 kernel option needs to be added to the kernel boot parameters during system installation so key generation is done with FIPS-approved algorithms and continuous monitoring tests in place.
Enable FIPS mode after installation (not strict FIPS-compliant) with the following command:
$ sudo fips-mode-setup --enable
Reboot the system for the changes to take effect.