documentation_complete: true


title: 'Encrypt Partitions'

description: |-
    {{{ full_name }}} natively supports partition encryption through the
    Linux Unified Key Setup-on-disk-format (LUKS) technology. The easiest way to
    encrypt a partition is during installation time.
    <br /><br />
    For manual installations, select the <tt>Encrypt</tt> checkbox during
    partition creation to encrypt the partition. When this
    option is selected the system will prompt for a passphrase to use in
    decrypting the partition. The passphrase will subsequently need to be entered manually
    every time the system boots.
    {{% if product not in ["sle12", "sle15", "slmicro5", "slmicro6", "ubuntu2204", "ubuntu2404"] %}}
    <br /><br />
    For automated/unattended installations, it is possible to use Kickstart by adding
    the <tt>--encrypted</tt> and <tt>--passphrase=</tt> options to the definition of each partition to be
    encrypted. For example, the following line would encrypt the root partition:
    <pre>part / --fstype=ext4 --size=100 --onpart=hda1 --encrypted --passphrase=<i>PASSPHRASE</i></pre>
    Any <i>PASSPHRASE</i> is stored in the Kickstart in plaintext, and the Kickstart
    must then be protected accordingly.
    Omitting the <tt>--passphrase=</tt> option from the partition definition will cause the
    installer to pause and interactively ask for the passphrase during installation.
    <br /><br />
    By default, the <tt>Anaconda</tt> installer uses <tt>aes-xts-plain64</tt> cipher
    with a minimum <tt>512</tt> bit key size which should be compatible with FIPS enabled.
    {{% endif %}}
    <br /><br />
    Detailed information on encrypting partitions using LUKS or LUKS ciphers can be found on
    the {{{ full_name }}} Documentation web site:<br />
    {{% if product == "ol7" %}}
        {{{ weblink(link="https://docs.oracle.com/en/operating-systems/oracle-linux/7/security/security-SecureInstallationandConfiguration.html#ol7-instcsdp-sec") }}}
    {{% elif product == "ol8" %}}
        {{{ weblink(link="https://docs.oracle.com/en/operating-systems/oracle-linux/8/install/install-InstallingOracleLinuxManually.html#system-options") }}}
    {{% elif product == "ol9" %}}
        {{{ weblink(link="https://docs.oracle.com/en/operating-systems/oracle-linux/9/install/install-InstallingOracleLinuxManually.html#system-options") }}}
    {{% elif product == "sle12" %}}
        {{{ weblink(link="https://documentation.suse.com/sles/12-SP5/html/SLES-all/cha-security-cryptofs.html") }}}
    {{% elif product == "sle15" %}}
        {{{ weblink(link="https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-security-cryptofs.html") }}}
    {{% elif product == "slmicro5" %}}
        {{{ weblink(link="https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-security-cryptofs.html") }}}
    {{% elif product == "slmicro6" %}}
        {{{ weblink(link="https://documentation.suse.com/sle-micro/6.0/html/Micro-deployment-raw-images/index.html#deployment-jeos-firstboot") }}}
    {{% elif 'ubuntu' in product %}}
        {{{ weblink(link="https://help.ubuntu.com/community/Full_Disk_Encryption_Howto_2019") }}}
    {{% elif product == "fedora" %}}
        {{{ weblink(link="https://docs.fedoraproject.org/en-US/quick-docs/encrypting-drives-using-LUKS/") }}}
    {{% else %}}
        {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/security_hardening/encrypting-block-devices-using-luks_security-hardening") }}}
    {{% endif %}}.

rationale: |-
    The risk of a system's physical compromise, particularly mobile systems such as
    laptops, places its data at risk of compromise.  Encrypting this data mitigates
    the risk of its loss if the system is lost.

severity: high

identifiers:
    cce@rhel8: CCE-80789-1
    cce@rhel9: CCE-90849-1
    cce@rhel10: CCE-89165-5
    cce@sle12: CCE-83046-3
    cce@sle15: CCE-85719-3
    cce@sle16: CCE-96127-6
    cce@slmicro5: CCE-93760-7
    cce@slmicro6: CCE-94686-3

references:
    cis-csc: 13,14
    cobit5: APO01.06,BAI02.01,BAI06.01,DSS04.07,DSS05.03,DSS05.04,DSS05.07,DSS06.02,DSS06.06
    cui: 3.13.16
    hipaa: 164.308(a)(1)(ii)(D),164.308(b)(1),164.310(d),164.312(a)(1),164.312(a)(2)(iii),164.312(a)(2)(iv),164.312(b),164.312(c),164.314(b)(2)(i),164.312(d)
    isa-62443-2013: 'SR 3.4,SR 4.1,SR 5.2'
    iso27001-2013: A.10.1.1,A.11.1.4,A.11.1.5,A.11.2.1,A.13.1.1,A.13.1.3,A.13.2.1,A.13.2.3,A.13.2.4,A.14.1.2,A.14.1.3,A.6.1.2,A.7.1.1,A.7.1.2,A.7.3.1,A.8.2.2,A.8.2.3,A.9.1.1,A.9.1.2,A.9.2.3,A.9.4.1,A.9.4.4,A.9.4.5
    nerc-cip: CIP-003-8 R4.2,CIP-007-3 R5.1
    nist: CM-6(a),SC-28,SC-28(1),SC-13,AU-9(3)
    nist-csf: PR.DS-1,PR.DS-5
    nist@sle12: SC-28,SC-28.1
    nist@sle15: SC-28,SC-28.1
    srg: SRG-OS-000405-GPOS-00184,SRG-OS-000185-GPOS-00079,SRG-OS-000404-GPOS-00183
    stigid@ol8: OL08-00-010030
    stigid@sle12: SLES-12-010450
    stigid@sle15: SLES-15-010330

ocil_clause: 'partitions do not have a type of crypto_LUKS'

ocil: |-
    Check the system partitions to determine if they are encrypted with the following command:
    <pre>blkid</pre>
    <br /><br />
    Output will be similar to:
    <pre>/dev/sda1: UUID=" ab12c3de-4f56-789a-8f33-3850cc8ce3a2
    " TYPE="crypto_LUKS"
    /dev/sda2: UUID=" bc98d7ef-6g54-321h-1d24-9870de2ge1a2
    " TYPE="crypto_LUKS"</pre>
    <br /><br />
    The boot partition and pseudo-file systems, such as /proc, /sys, and tmpfs,
    are not required to use disk encryption and are not a finding.


fixtext: |-
    Configure {{{ full_name }}} to prevent unauthorized modification of all information at rest by using disk encryption.

    Encrypting a partition in an already installed system is more difficult, because existing partitions will need to be resized and changed.
    To encrypt an entire partition, dedicate a partition for encryption in the partition layout.

    {{% if "slmicro" in product %}}
    The standard partitioning proposal as suggested by YaST (installation and configuration tool for Linux) does not include an encrypted 
    partition by default. Add it manually in the partitioning dialog.
    
    The following set of commands will switch {{{ full_name }}} to work in FIPS mode:
    <pre>$ sudo transactional-update pkg install -t pattern microos-fips</pre>
    <pre>$ sudo reboot</pre>

    Add of modify the following line in the "/etc/default/grub" file to include "fips=1":
    <pre>GRUB_CMDLINE_LINUX_DEFAULT="splash=silent swapaccount=1 apparmor=0 mitigations=auto quiet crashkernel=195M,high crashkernel=72M,low fips=1"</pre>
    <pre>$ sudo transactional-update grub.cfg</pre>
    <pre>$ sudo reboot</pre>

    {{% endif %}}


srg_requirement: |-
    {{{ full_name }}} local disk partitions must implement cryptographic mechanisms to prevent unauthorized disclosure or modification of all information that requires at-rest protection.

checktext: |-
    Verify {{{ full_name }}} prevents unauthorized disclosure or modification of all information requiring at-rest protection by using disk encryption.

    If there is a documented and approved reason for not having data-at-rest encryption, this requirement is Not Applicable.

    {{% if "slmicro" in product %}}
    Verify that the system partitions are all encrypted with the following commands:
    <pre>$ sudo blkid</pre>
    <br /><br />
    Output will be similar to:
    /dev/sda1: "UUID=26d4a101-7f48-4394-b730-56dc00e65f64" TYPE="crypto_LUKS"
    /dev/sda2: "UUID=f5b8a790-14cb-4b82-882d-707d52f27765" TYPE="crypto_LUKS"
    /dev/sda3: "UUID=f2d86128-f975-478d-a5b0-25806c900eac" TYPE="crypto_LUKS"

    Every persistent disk partition present must be of type "crypto_LUKS". 
    If any partitions other than the boot partition or pseudo file systems (such as /proc or /sys) or temporary file systems (that are tmpfs) 
    are not type "crypto_LUKS", ask the administrator to indicate how the partitions are encrypted. 
    If there is no evidence that these partitions are encrypted, this is a finding.

    <pre>$ sudo more /etc/cryptab</pre>
    <br /><br />
    Output will be similar to:    
    cr_root UUID=26d4a101-7f48-4394-b730-56dc00e65f64
    cr_home UUID=f5b8a790-14cb-4b82-882d-707d52f27765
    cr_swap UUID=f2d86128-f975-478d-a5b0-25806c900eac    
    
    Every persistent disk partition present on the system must have an entry in the /etc/crypttab file. 
    If any partitions other than pseudo file systems (such as /proc or /sys) are not listed or "/etc/crypttab" does not exist, this is a finding.

    Verify the system works in FIPS mode with the following command:
    <pre>sudo sysctl - a | grep fips</pre>
    <br /><br />
    crypto.fips_enabled = 1

    {{% elif 'ubuntu' in product %}}
    Determine the partition layout for the system with the following command:
    <pre>$ sudo fdisk -l</pre>

    Verify that the system partitions are all encrypted with the following command:
    <pre>$ more /etc/crypttab</pre>

    Every persistent disk partition present must have an entry in the file.
    If any partitions other than the boot partition or pseudo file systems (such as /proc or /sys) are not listed, this is a finding.
    {{% else -%}}
    Verify all system partitions are encrypted with the following command:

    $ blkid

    /dev/map per/rhel-root:  UUID="67b7d7fe-de60-6fd0-befb-e6748cf97743" TYPE="crypto_LUKS"

    Every persistent disk partition present must be of type "crypto_LUKS". If any partitions other than the boot partition or pseudo file systems (such as /proc or /sys) or temporary file systems (that are tmpfs) are not type "crypto_LUKS", ask the administrator to indicate how the partitions are encrypted.  If there is no evidence that these partitions are encrypted, this is a finding.
    {{% endif -%}}

{{% if 'ol' in families %}}
warnings:
    - general: |-
        Due to different needs, possibilities, and passphrase requirement automated remediation is
        not available for this configuration check.
{{% endif %}}
