BaselineWatch
4 STIGs
Desk

Linux STIGs

CAT II 399

Any vulnerability, the exploitation of which has a potential to result in loss of confidentiality, availability or integrity.

  1. RHEL-10-000530 CAT II V-280937 · SRG-OS-000420-GPOS-00186

    RHEL 10 must use a separate file system for user home directories (such as "/home" or an equivalent).

    Maps to SC-5 via CCI-002385
    Check

    Verify RHEL 10 uses a separate file system/partition for "/home" with the following command: $ mount | grep /home /dev/mapper/luks-ca2261ed-7b00-4b7b-84cd-8cd6d8fa4b28 on /home type xfs (rw,nodev,nosuid,noexec,seclabel) Note: Options displayed for mount may differ. If a separate entry for "/home" is not in use, this is a finding.

    Fix

    Configure RHEL 10 to use a separate file system for user home directories by migrating the "/home" directory onto a separate file system/partition.

  2. RHEL-10-000540 CAT II V-280938 · SRG-OS-000420-GPOS-00186

    RHEL 10 must use a separate file system for "/tmp".

    Maps to SC-5 via CCI-002385
    Check

    Verify RHEL 10 uses a separate file system/partition for "/tmp" with the following command: $ mount | grep /tmp /dev/mapper/luks-2d7e1b45-73c4-4282-8838-15a897e0d04e on /tmp type xfs(rw,nodev,nosuid,noexec,seclabel) Note: Options displayed for mount may differ. If a separate entry for "/tmp" is not in use, this is a finding.

    Fix

    Configure RHEL 10 to use a separate file system for temporary storage directories by migrating the "/tmp" path onto a separate file system.

  3. RHEL-10-000550 CAT II V-280939 · SRG-OS-000420-GPOS-00186

    RHEL 10 must use a separate file system for "/var".

    Maps to SC-5 via CCI-002385
    Check

    Verify RHEL 10 uses a separate file system/partition for "/var" with the following command: $ mount | grep /var /dev/mapper/luks-51150299-f295-4145-b8f0-ebe9c6dfd5a0 on /var type xfs (rw,nodev,relatime,seclabel,attr2) Note: Options displayed for mount may differ. If a separate entry for "/var" is not in use, this is a finding.

    Fix

    Configure RHEL 10 to use a separate file system for the "/var" directory by migrating the "/var" path onto a separate file system.

  4. RHEL-10-000560 CAT II V-280940 · SRG-OS-000420-GPOS-00186

    RHEL 10 must use a separate file system for "/var/log".

    Maps to SC-5 via CCI-002385
    Check

    Verify RHEL 10 uses a separate file system/partition for "/var/log" with the following command: $ mount | grep /var/log /dev/mapper/luks-c651f493-9fdc-4c6e-a711-0a4f03149661 on /var/log type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2) Note: Options displayed for mount may differ. If a separate entry for "/var/log" is not in use, this is a finding.

    Fix

    Configure RHEL 10 to use a separate file system for log file directories by migrating the "/var/log" path onto a separate file system.

  5. RHEL-10-000570 CAT II V-280941 · SRG-OS-000420-GPOS-00186

    RHEL 10 must use a separate file system for "/var/tmp".

    Maps to SC-5 via CCI-002385
    Check

    Verify RHEL 10 uses a separate file system/partition for "/var/tmp" with the following command: $ mount | grep /var/tmp /dev/mapper/luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2) Note: Options displayed for mount may differ. If a separate entry for "/var/tmp" is not in use, this is a finding.

    Fix

    Configure RHEL 10 to use a separate file system for the "/var/tmp" path by migrating "/var/tmp" onto a separate file system.

  6. RHEL-10-001020 CAT II V-280931 · SRG-OS-000366-GPOS-00153

    RHEL 10 must ensure cryptographic verification of vendor software packages.

    Maps to CM-14 via CCI-003992
    Check

    Verify RHEL 10 ensures cryptographic verification of vendor software packages. Confirm Red Hat package-signing keys are installed on the system and verify their fingerprints match vendor values. Note: For RHEL 10 software packages, Red Hat uses GPG keys labeled "release key 2", "auxiliary key 3", and "release key 4". The keys are defined in key file "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release" by default. List Red Hat GPG keys installed on the system: $ sudo rpm -q --queryformat "%{SUMMARY}\n" gpg-pubkey | grep -i "red hat" Red Hat, Inc. (release key 2) public key Red Hat, Inc. (auxiliary key 3) public key Red Hat, Inc. (release key 4) public key If Red Hat GPG keys "release key 2", "auxiliary key 3", and "release key 4" are not installed, or if the key file "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release" is missing, this is a finding. List key fingerprints of installed Red Hat GPG keys: $ sq inspect /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: OpenPGP Certificate. Fingerprint: 567E347AD0044ADE55BA8A5F199E2F91FD431D51 Public-key algo: RSA Public-key size: 4096 bits Creation time: 2009-10-22 11:59:55 UTC Key flags: certification, signing UserID: Red Hat, Inc. (release key 2) Note: There is another block of armored OpenPGP data. Note: This is a non-standard extension to OpenPGP. /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: OpenPGP Certificate. Fingerprint: 7E4624258C406535D56D6F135054E4A45A6340B3 Public-key algo: RSA Public-key size: 4096 bits Creation time: 2022-03-09 21:56:46 UTC Key flags: certification, signing UserID: Red Hat, Inc. (auxiliary key 3) Note: There is another block of armored OpenPGP data. Note: This is a non-standard extension to OpenPGP. /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: OpenPGP Certificate. Fingerprint: FCD355B305707A62DA143AB6E422397E50FE8467A2A95343D246D6276AFEDF8F Public-key algo: ML-DSA-87+Ed448 Creation time: 2025-10-08 17:40:03 UTC Key flags: certification, signing UserID: Red Hat, Inc. (release key 4) Compare key fingerprints of installed Red Hat GPG keys with fingerprints listed for RHEL 10 on the Red Hat "Product Signing Keys" webpage at https://access.redhat.com/security/team/key. If key fingerprints do not match, this is a finding.

    Fix

    Configure RHEL 10 to ensure cryptographic verification of vendor software packages. Install Red Hat package-signing keys on the system and verify their fingerprints match vendor values. Insert the RHEL 10 installation disc or attach the RHEL 10 installation image to the system. Mount the disc or image to make the contents accessible inside the system. Assuming the mounted location is "/media/cdrom", use the following command to copy the Red Hat GPG key file onto the system: $ sudo cp /media/cdrom/RPM-GPG-KEY-redhat-release /etc/pki/rpm-gpg/ Import Red Hat GPG keys from the key file into the system keyring: $ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release Using the steps listed in the Check Text, confirm the newly imported keys show as installed on the system and verify their fingerprints match vendor values.

  7. RHEL-10-200000 CAT II V-280942 · SRG-OS-000437-GPOS-00194

    RHEL 10 must remove all software components after updated versions have been installed.

    Maps to SI-2(6) via CCI-002617
    Check

    Verify RHEL 10 removes all software components after updated versions have been installed with the following command: $ sudo grep -i clean_requirements_on_remove /etc/dnf/dnf.conf clean_requirements_on_remove=True If "clean_requirements_on_remove" is not set to either "1", "true", or "yes" (keywords containing letters are case insensitive), this is a finding.

    Fix

    Configure RHEL 10 to remove all software components after updated versions have been installed. Edit the file "/etc/dnf/dnf.conf" by adding or editing the following line: clean_requirements_on_remove=True Note: Any of the following are acceptable: "1", "true", or "yes" (keywords containing letters are case insensitive).

  8. RHEL-10-200010 CAT II V-280943 · SRG-OS-000095-GPOS-00049

    RHEL 10 must not have the "nfs-utils" package installed.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 does not have the "nfs-utils" package installed with the following command: $ sudo dnf list --installed nfs-utils Error: No matching Packages to list If the "nfs-utils" package is installed, this is a finding.

    Fix

    Configure RHEL 10 to not have the "nfs-utils" package installed with the following command: $ sudo dnf -y remove nfs-utils

  9. RHEL-10-200030 CAT II V-280945 · SRG-OS-000095-GPOS-00049

    RHEL 10 must not have the "gssproxy" package installed.

    Maps to CM-7 via CCI-000381
    Check

    Note: If Network File System (NFS) mounts are authorized and in use on the system, this control is not applicable. Verify RHEL 10 does not have the "gssproxy" package installed with the following command: $ sudo dnf list --installed gssproxy Error: No matching Packages to list If the "gssproxy" package is installed and is not documented with the information system security officer as an operational requirement, this is a finding.

    Fix

    Configure RHEL 10 to not have the "gssproxy" package installed with the following command: $ sudo dnf -y remove gssproxy

  10. RHEL-10-200040 CAT II V-280946 · SRG-OS-000095-GPOS-00049

    RHEL 10 must not have the tuned package installed.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 does not have the tuned package installed with the following command: $ sudo dnf list --installed tuned Error: No matching Packages to list If the "tuned" package is installed and is not documented with the information system security officer as an operational requirement, this is a finding.

    Fix

    Configure RHEL 10 to not have the tuned package installed with the following command: $ sudo dnf -y remove tuned

  11. RHEL-10-200060 CAT II V-280948 · SRG-OS-000095-GPOS-00049

    RHEL 10 must not have the unbound package installed.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 does not have a DNS package installed with the following command: $ sudo dnf list --installed unbound Error: No matching Packages to list If the "unbound" package is installed, and the information system security officer lacks a documented requirement for a DNS, this is a finding.

    Fix

    Configure RHEL 10 to not have the unbound package installed with the following command: $ sudo dnf -y remove unbound

  12. RHEL-10-200080 CAT II V-280950 · SRG-OS-000095-GPOS-00049

    RHEL 10 must not have the "gdm" package installed.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 does not have the "gdm" package installed with the following command: $ sudo dnf list --installed gdm Error: No matching Packages to list If the "gdm" package is installed and the need for a GUI interface has not been documented with the information system security officer, this is a finding.

    Fix

    Configure RHEL 10 to not have the "gdm" package installed with the following command: $ sudo dnf -y remove gdm

  13. RHEL-10-200500 CAT II V-280952 · SRG-OS-000366-GPOS-00153

    RHEL 10 must have the "subscription-manager" package installed.

    Maps to CM-14 via CCI-003992
    Check

    Note: If the system is not an internet connected system, this requirement is not applicable. Verify RHEL 10 has the "subscription-manager" package installed with the following command: $ sudo dnf list --installed subscription-manager Installed Packages subscription-manager.x86_64 1.30.6.1-1.el10_0 @rhel-10-for-x86_64-baseos-rpms If the "subscription-manager" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "subscription-manager" package installed with the following command: $ sudo dnf -y install subscription-manager

  14. RHEL-10-200510 CAT II V-280953 · SRG-OS-000095-GPOS-00049

    RHEL 10 must have the "nss-tools" package installed.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 has the "nss-tools" package installed with the following command: $ sudo dnf list --installed nss-tools Installed Packages nss-tools.x86_64 3.112.0-4.el10_0 @rhel-10-for-x86_64-appstream-rpms If the "nss-tools" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "nss-tools" package installed with the following command: $ sudo dnf -y install nss-tools

  15. RHEL-10-200520 CAT II V-280954 · SRG-OS-000363-GPOS-00150

    RHEL 10 must have the "s-nail" package installed.

    Maps to CM-3(5) via CCI-001744
    Check

    Verify RHEL 10 is configured to allow sending email notifications. Verify the "s-nail" package is installed on the system with the following command: $ sudo dnf list --installed s-nail Installed Packages s-nail.x86_64 14.9.24-12.el10 @rhel-10-for-x86_64-appstream-rpms If the "s-nail" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "s-nail" package installed with the following command: $ sudo dnf -y install s-nail

  16. RHEL-10-200530 CAT II V-280955 · SRG-OS-000096-GPOS-00050

    RHEL 10 must have the "firewalld" package installed.

    Maps to CM-7 via CCI-000382
    Check

    Verify RHEL 10 has the "firewalld" package installed. Run the following command to determine if the "firewalld" package is installed: $ dnf list --installed firewalld Installed Packages firewalld.noarch 2.3.1-1.el10_0 @rhel-10-for-x86_64-baseos-rpms If the "firewall" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "firewalld" package installed with the following command: $ sudo dnf -y install firewalld

  17. RHEL-10-200531 CAT II V-280956 · SRG-OS-000096-GPOS-00050

    RHEL 10 must have the "firewalld" service set to active.

    Maps to AC-17(1), CM-7 via CCI-000382, CCI-002314
    Check

    Verify RHEL 10 is configured so that "firewalld" is active with the following command: $ systemctl is-active firewalld active If the "firewalld" service is not active, this is a finding.

    Fix

    Configure RHEL 10 to have the "firewalld" service set to active. To enable the "firewalld" service, run the following command: $ sudo systemctl enable --now firewalld

  18. RHEL-10-200532 CAT II V-280957 · SRG-OS-000297-GPOS-00115

    RHEL 10 must employ a deny-all, allow-by-exception policy for allowing connections to other systems.

    Maps to AC-17(1) via CCI-002314
    Check

    Verify RHEL 10 is configured so that "firewalld" employs a deny-all, allow-by-exception policy for allowing connections to other systems with the following commands (using ens133 as an example interface): $ sudo firewall-cmd --state running $ sudo firewall-cmd --get-active-zones drop (default) interfaces: ens33 $ sudo firewall-cmd --info-zone=drop | grep target target: DROP $ sudo firewall-cmd --permanent --info-zone=drop | grep target target: DROP If no zones are active on the RHEL 10 interfaces or if runtime and permanent targets are set to an option other than "DROP", this is a finding. Verify the permanent configuration is valid and there are no misconfigured zones or rules with the following command: $ sudo firewall-cmd --check-config success If this command does not return "success", this is a finding.

    Fix

    Configure RHEL 10 so that the "firewalld" daemon employs a deny-all, allow-by-exception policy with the following commands (using ens133 as an example interface): Start by adding the exceptions that are required for mission functionality to the "drop" zone. If SSH access on port 22 is needed, for example, run the following: $ sudo firewall-cmd --permanent --add-service=ssh --zone=drop Reload the firewall rules to update the runtime configuration from the "--permanent" changes made above: $ sudo firewall-cmd --reload Set the default zone to the drop zone: $ sudo firewall-cmd --set-default-zone=drop Note: This is a runtime and permanent change. Add any interfaces to the newly modified "drop" zone: $ sudo firewall-cmd --permanent --zone=drop --change-interface=ens33 Reload the firewall rules for changes to take effect: $ sudo firewall-cmd --reload

  19. RHEL-10-200540 CAT II V-280958 · SRG-OS-000355-GPOS-00143

    RHEL 10 must have the "chrony" package installed.

    Maps to SC-45(1) via CCI-004923
    Check

    Verify RHEL 10 has the "chrony" package installed with the following command: $ sudo dnf list --installed chrony Installed Packages chrony.x86_64 4.6.1-1.el10 @anaconda If the "chrony" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "chrony" package installed with the following command: $ sudo dnf -y install chrony

  20. RHEL-10-200541 CAT II V-280959 · SRG-OS-000355-GPOS-00143

    RHEL 10 must enable the chronyd service.

    Maps to SC-45(1) via CCI-004923
    Check

    Verify RHEL 10 sets the chronyd service to active with the following command: $ systemctl is-active chronyd active If the chronyd service is not active, this is a finding.

    Fix

    Configure RHEL 10 to enable the chronyd service with the following command: $ sudo systemctl enable --now chronyd

  21. RHEL-10-200542 CAT II V-280960 · SRG-OS-000096-GPOS-00050

    RHEL 10 must disable the chrony daemon from acting as a server.

    Maps to CM-7 via CCI-000382, CCI-000381
    Check

    Verify RHEL 10 disables the chrony daemon from acting as a server with the following command: $ sudo grep -w port /etc/chrony.conf port 0 If the "port" option is not set to "0", is commented out, or is missing, this is a finding.

    Fix

    Configure RHEL 10 to disable the chrony daemon from acting as a server by adding/modifying the following line in the "/etc/chrony.conf" file: port 0 Restart the chronyd service with the following command for the changes to take effect: $ sudo systemctl restart chronyd

  22. RHEL-10-200543 CAT II V-280961 · SRG-OS-000096-GPOS-00050

    RHEL 10 must disable network management of the chrony daemon.

    Maps to CM-7 via CCI-000382, CCI-000381
    Check

    Verify RHEL 10 disables network management of the chrony daemon with the following command: $ sudo grep -w cmdport /etc/chrony.conf cmdport 0 If the "cmdport" option is not set to "0", is commented out, or is missing, this is a finding.

    Fix

    Configure RHEL 10 to disable network management of the chrony daemon by adding/modifying the following line in the "/etc/chrony.conf" file: cmdport 0 Restart the chronyd service with the following command for the changes to take effect: $ sudo systemctl restart chronyd

  23. RHEL-10-200560 CAT II V-280962 · SRG-OS-000378-GPOS-00163

    RHEL 10 must have the USBGuard package installed.

    Maps to IA-3 via CCI-001958
    Check

    Verify RHEL 10 has USBGuard installed on the operating system with the following command: $ sudo dnf list --installed usbguard Installed Packages usbguard.x86_64 1.1.3-6.el10 @rhel-10-for-x86_64-appstream-rpms If the USBGuard package is not installed, ask the SA to indicate how unauthorized peripherals are being blocked. If there is no evidence that unauthorized peripherals are being blocked before establishing a connection, this is a finding. If the system is a virtual machine with no virtual or physical USB peripherals attached, this is not a finding.

    Fix

    Configure RHEL 10 to have the USBGuard package installed with the following command: $ sudo dnf -y install usbguard Enable the service to start on boot and then start it with the following commands: $ sudo systemctl enable usbguard $ sudo systemctl start usbguard Verify the status of the service with the following command: $ sudo systemctl status usbguard Note: USBGuard must be configured to allow authorized devices once it is enabled on RHEL 10.

  24. RHEL-10-200561 CAT II V-280963 · SRG-OS-000378-GPOS-00163

    RHEL 10 must have the USBGuard package enabled.

    Maps to CM-7(9), IA-3 via CCI-001958, CCI-003959
    Check

    Note: If the system is virtual machine with no virtual or physical USB peripherals attached, this is not applicable. Verify RHEL 10 has USBGuard enabled with the following command: $ systemctl is-active usbguard active If USBGuard is not active, ask the SA to indicate how unauthorized peripherals are being blocked. If there is no evidence that unauthorized peripherals are being blocked before establishing a connection, this is a finding.

    Fix

    Configure RHEL 10 to have the USBGuard service enabled by running the following command: $ sudo systemctl enable --now usbguard

  25. RHEL-10-200562 CAT II V-280964 · SRG-OS-000378-GPOS-00163

    RHEL 10 must block unauthorized peripherals before establishing a connection.

    Maps to IA-3 via CCI-001958
    Check

    Note: If the system is virtual machine with no virtual or physical USB peripherals attached, this is not applicable. Verify RHEL 10 USBGuard has a policy configured. Confirm the setting with the following command: $ sudo usbguard list-rules allow id 1d6b:0001 serial If the command does not return results, or an error is returned, ask the SA to indicate how unauthorized peripherals are being blocked. If there is no evidence that unauthorized peripherals are being blocked before establishing a connection, this is a finding.

    Fix

    Configure RHEL 10 to enable the blocking of unauthorized peripherals with the following command: Note: This command must be run from a root shell and will create an allowlist for any USB devices currently connected to the system. # usbguard generate-policy --no-hash > /etc/usbguard/rules.conf Note: Enabling and starting usbguard without properly configuring it for an individual system will immediately prevent any access over a USB device such as a keyboard or mouse.

  26. RHEL-10-200563 CAT II V-280965 · SRG-OS-000062-GPOS-00031

    RHEL 10 must enable audit logging for the USBGuard daemon.

    Maps to AU-12 via CCI-000169, CCI-000172
    Check

    Note: If the system is a virtual machine with no virtual or physical USB peripherals attached, this is not applicable. Verify RHEL 10 audit logging is enabled for the USBGuard daemon. Confirm the setting with the following command: $ sudo grep AuditBackend /etc/usbguard/usbguard-daemon.conf AuditBackend=LinuxAudit If "AuditBackend" is not set to "LinuxAudit", this is a finding.

    Fix

    Configure RHEL 10 USBGuard AuditBackend to use the audit system. Add or edit the following line in "/etc/usbguard/usbguard-daemon.conf": AuditBackend=LinuxAudit

  27. RHEL-10-200570 CAT II V-280966 · SRG-OS-000134-GPOS-00068

    RHEL 10 must have the "policycoreutils" package installed.

    Maps to SC-3 via CCI-001084
    Check

    Verify RHEL 10 has the "policycoreutils" package installed with the following command: $ sudo dnf list --installed policycoreutils Installed Packages policycoreutils.x86_64 3.8-1.el10 @anaconda If the "policycoreutils" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "policycoreutils" package installed with the following command: $ sudo dnf -y install policycoreutils

  28. RHEL-10-200580 CAT II V-280967 · SRG-OS-000095-GPOS-00049

    RHEL 10 must have the "policycoreutils-python-utils" package installed.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 has the "policycoreutils-python-utils" service package installed with the following command: $ sudo dnf list --installed policycoreutils-python-utils Installed Packages policycoreutils-python-utils.noarch 3.8-1.el10 @AppStream If the "policycoreutils-python-utils" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "policycoreutils-python-utils" service package installed with the following command: $ sudo dnf -y install policycoreutils-python-utils

  29. RHEL-10-200590 CAT II V-280968 · SRG-OS-000324-GPOS-00125

    RHEL 10 must have the "sudo" package installed.

    Maps to AC-6(10) via CCI-002235
    Check

    Verify RHEL 10 has the "sudo" package installed with the following command: $ sudo dnf list --installed sudo Installed Packages sudo.x86_64 1.9.15-8.p5.el10_0.2 @rhel-10-for-x86_64-baseos-rpms If the "sudo" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "sudo" package installed with the following command: $ sudo dnf -y install sudo

  30. RHEL-10-200600 CAT II V-280969 · SRG-OS-000370-GPOS-00155

    RHEL 10 must have the "fapolicy" module installed.

    Maps to CM-7(2), CM-7(5) via CCI-001774, CCI-001764
    Check

    Verify RHEL 10 has the "fapolicyd" package installed with the following command: $ sudo dnf list --installed fapolicyd Installed Packages fapolicyd.x86_64 1.3.3-102.el10 @rhel-10-for-x86_64-appstream-rpms If the "fapolicyd" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "fapolicyd" package installed with the following command: $ sudo dnf -y install fapolicyd

  31. RHEL-10-200601 CAT II V-280970 · SRG-OS-000370-GPOS-00155

    RHEL 10 must enable the "fapolicy" module.

    Maps to CM-7(2), CM-7(5) via CCI-001774, CCI-001764
    Check

    Verify RHEL 10 "fapolicyd" is active with the following command: $ systemctl is-active fapolicyd active If the "fapolicyd" module is not active, this is a finding.

    Fix

    Configure RHEL 10 to enable "fapolicyd" with the following command: $ systemctl enable --now fapolicyd

  32. RHEL-10-200602 CAT II V-280971 · SRG-OS-000368-GPOS-00154

    RHEL 10 must be configured to employ a deny-all, permit-by-exception policy to allow the execution of authorized software programs.

    Maps to CM-7(2), CM-7(5) via CCI-001764, CCI-001774
    Check

    Verify the RHEL 10 "fapolicyd" employs a deny-all, permit-by-exception policy. Check that "fapolicyd" is in enforcement mode with the following command: $ sudo grep permissive /etc/fapolicyd/fapolicyd.conf permissive = 0 If "fapolicyd" is not running in enforcement mode, this is a finding. Check that "fapolicyd" employs a deny-all policy on system mounts with the following commands: $ sudo tail /etc/fapolicyd/compiled.rules allow exe=/usr/bin/python3.7 : ftype=text/x-python deny_audit perm=any pattern=ld_so : all deny perm=any all : all If "fapolicyd" is not running with a deny-all, permit-by-exception policy, this is a finding. Note: "deny_log" or "deny_audit" options meet the security requirements. These options will generate higher volumes of logs.

    Fix

    Configure RHEL 10 to employ a deny-all, permit-by-exception application allow listing policy with "fapolicyd". With the "fapolicyd" installed and enabled, configure the daemon to function in permissive mode until the allow list is built correctly to avoid system lockout. Do this by editing the "/etc/fapolicyd/fapolicyd.conf" file with the following line: permissive = 1 Build the allow list in a file within the "/etc/fapolicyd/rules.d" directory, ensuring the last rule implements a deny-all policy, such as "deny perm=any all : all". Once it is determined the allow list is built correctly, set the "fapolicyd" to enforcing mode by editing the "permissive" line in the /etc/fapolicyd/fapolicyd.conf file. permissive = 0

  33. RHEL-10-200610 CAT II V-280972 · SRG-OS-000375-GPOS-00160

    RHEL 10 must have the "pcsc-lite" package installed.

    Maps to IA-2(6) via CCI-004046
    Check

    Note: If the system administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable. Verify RHEL 10 has the "pcsc-lite" package installed with the following command: $ sudo dnf list --installed pcsc-lite Installed Packages pcsc-lite.x86_64 2.2.3-2.el10 @anaconda If the "pcsc-lite" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "pcsc-lite" package installed with the following command: $ sudo dnf -y install pcsc-lite

  34. RHEL-10-200611 CAT II V-280973 · SRG-OS-000375-GPOS-00160

    RHEL 10 must have the "pcscd" socket set to active.

    Maps to IA-2(6) via CCI-004046
    Check

    Verify RHEL 10 has the "pcscd" socket set to active with the following command: $ systemctl is-active pcscd.socket active If the "pcscd" socket is not active, this is a finding.

    Fix

    Configure RHEL 10 to have the "pcscd" socket set to active with the following command: $ sudo systemctl enable --now pcscd.socket

  35. RHEL-10-200612 CAT II V-280974 · SRG-OS-000375-GPOS-00160

    RHEL 10 must have the "pcsc-lite-ccid" package installed.

    Maps to IA-2(6) via CCI-004046
    Check

    Verify RHEL 10 has the "pcsc-lite-ccid" package installed with the following command: $ sudo dnf list --installed pcsc-lite-ccid Installed Packages pcsc-lite-ccid.x86_64 1.6.0-2.el10 @anaconda If the "pcsc-lite-ccid" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "pcsc-lite-ccid" package installed with the following command: $ sudo dnf -y install pcsc-lite-ccid

  36. RHEL-10-200620 CAT II V-280975 · SRG-OS-000375-GPOS-00160

    RHEL 10 must have the "opensc" package installed.

    Maps to IA-2(6), IA-2(12) via CCI-004046, CCI-001953
    Check

    Verify RHEL 10 has the "opensc" package installed with the following command: $ sudo dnf list --installed opensc Installed Packages opensc.x86_64 0.26.1-1.el10 @rhel-10-for-x86_64-baseos-rpm If the "opensc" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "opensc" package installed with the following command: $ sudo dnf -y install opensc

  37. RHEL-10-200621 CAT II V-280976 · SRG-OS-000104-GPOS-00051

    RHEL 10 must use the common access card (CAC) smart card driver.

    Maps to IA-2, IA-2(1), IA-2(2), IA-2(5) via CCI-000764, CCI-000766, CCI-000765, CCI-004045
    Check

    Verify RHEL 10 loads the CAC driver with the following command: $ sudo opensc-tool --get-conf-entry app:default:card_drivers cac If "cac" is not listed as a card driver, or no line is returned for "card_drivers", this is a finding.

    Fix

    Configure RHEL 10 to load the CAC driver: $ sudo opensc-tool --set-conf-entry app:default:card_drivers:cac Restart the pcscd service with the following command for the changes to take effect: $ sudo systemctl restart pcscd

  38. RHEL-10-200630 CAT II V-280977 · SRG-OS-000445-GPOS-00199

    RHEL 10 must have the Advanced Intrusion Detection Environment (AIDE) package installed.

    Maps to SI-6 via CCI-002696
    Check

    Verify RHEL 10 has the AIDE package installed with the following command: $ sudo dnf list --installed aide Installed Packages aide.x86_64 0.18.6-8.el10_0.2 @rhel-10-for-x86_64-appstream-rpms If AIDE is not installed, ask the system administrator how file integrity checks are performed on the system. If no application is installed to perform integrity checks, this is a finding. If AIDE is installed, determine if it has been initialized with the following command: $ sudo /usr/sbin/aide --check If the output is "Couldn't open file /var/lib/aide/aide.db.gz for reading", this is a finding.

    Fix

    Configure RHEL 10 so that "AIDE" is installed and initialized, and then perform a manual check. Install AIDE: $ sudo dnf -y install aide Initialize AIDE: $ sudo /usr/sbin/aide --init Example output: Start timestamp: 2025-04-03 10:09:04 -0600 (AIDE 0.16) AIDE initialized database at /var/lib/aide/aide.db.new.gz Number of entries: 86833 --------------------------------------------------- The attributes of the (uncompressed) database(s): --------------------------------------------------- /var/lib/aide/aide.db.new.gz MD5 : coZUtPHhoFoeD7+k54fUvQ== SHA1 : DVpOEMWJwo0uPgrKZAygIUgSxeM= SHA256 : EQiZH0XNEk001tcDmJa+5STFEjDb4MPE TGdBJ/uvZKc= SHA512 : 86KUqw++PZhoPK0SZvT3zuFq9yu9nnPP toei0nENVELJ1LPurjoMlRig6q69VR8l +44EwO9eYyy9nnbzQsfG1g== End timestamp: 2025-04-03 10:09:57 -0600 (run time: 0m 53s) The new database must be renamed to be read by AIDE: $ sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz Perform a manual check: $ sudo /usr/sbin/aide --check Example output: 2025-04-03 10:16:08 -0600 (AIDE 0.16) AIDE found NO differences between database and filesystem. Looks okay!! ...

  39. RHEL-10-200632 CAT II V-280979 · SRG-OS-000404-GPOS-00183

    RHEL 10 must use a file integrity tool that is configured to use FIPS 140-3-approved cryptographic hashes for validating file contents and directories.

    Maps to SC-28(1) via CCI-002475
    Check

    Verify RHEL 10 AIDE is configured to use FIPS 140-3 file hashing. Verify global default hash settings with the following command: $ sudo grep -iE 'sha|md5|rmd' /etc/aide.conf | grep -v ^# FIPSR = p+i+n+u+g+s+m+ftype+growing+acl+selinux+xattrs+sha512 ALLXTRAHASHES = sha512 /usr/sbin/auditctl p+i+n+u+g+s+b+acl+xattrs+sha512 /usr/sbin/auditd p+i+n+u+g+s+b+acl+xattrs+sha512 /usr/sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512 /usr/sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512 /usr/sbin/augenrules p+i+n+u+g+s+b+acl+xattrs+sha512 NORMAL = FIPSR+sha512 LSPP = FIPSR+sha512 DATAONLY = R+sha512 /etc/gshadow NORMAL /etc/shadow NORMAL If any hashes other than "sha512" are present, this is a finding. Confirm no legacy hashes exist with the following command: $ sudo grep -iE 'md5|sha1|whirlpool|tiger' /etc/aide.conf | grep -v ^# If any uncommented lines are returned, this is a finding.

    Fix

    Configure RHEL 10 so that the file integrity tool uses FIPS 140-3 cryptographic hashes for validating file and directory contents. If AIDE is installed, ensure the "sha512" rule is present on all uncommented file and directory selection lists, and that no legacy hashes exist. By default, AIDE excludes log files such as "/var/log" and other volatile files to reduce unnecessary notifications.

  40. RHEL-10-200633 CAT II V-280980 · SRG-OS-000363-GPOS-00150

    RHEL 10 must routinely check the baseline configuration for unauthorized changes and notify the system administrator when anomalies in the operation of any security functions are discovered.

    Maps to CM-3(5), SI-6 via CCI-001744, CCI-002699, CCI-002702
    Check

    Verify RHEL 10 routinely executes a file integrity scan for changes to the system baseline. The command used in the example will use a daily occurrence. Check the cron directories for scripts controlling the execution and notification of results of the file integrity application. For example, if AIDE is installed on the system, use the following commands: $ sudo ls -al /etc/cron.* | grep aide -rwxr-xr-x 1 root root 29 Nov 22 2015 aide $ sudo grep aide /etc/crontab /var/spool/cron/root /etc/crontab: 30 04 * * * root usr/sbin/aide /var/spool/cron/root: 30 04 * * * root usr/sbin/aide $ sudo more /etc/cron.daily/aide #!/bin/bash /usr/sbin/aide --check | /bin/mail -s "$HOSTNAME - Daily aide integrity check run" [email protected] If the file integrity application does not exist, a script file controlling the execution of the file integrity application does not exist, or the file integrity application does not notify designated personnel of changes, this is a finding.

    Fix

    Configure RHEL 10 to automatically run the file integrity tool on the system at least weekly and notify designated personnel if baseline configurations are changed in an unauthorized manner. The AIDE tool can be configured to email designated personnel with the use of the cron system. The following example output is generic. It will set cron to run AIDE daily and to send email at the completion of the analysis: $ sudo more /etc/cron.daily/aide #!/bin/bash /usr/sbin/aide --check | /bin/mail -s "$HOSTNAME - Daily aide integrity check run" [email protected]

  41. RHEL-10-200634 CAT II V-280981 · SRG-OS-000404-GPOS-00183

    RHEL 10 must be configured so that the file integrity tool verifies Access Control Lists (ACLs).

    Maps to SC-28(1) via CCI-002475
    Check

    Verify RHEL 10 AIDE is verifying ACLs. Verify ACL settings for all uncommented file and directory selection lists with the following command: $ sudo grep -E '^[^#]*acl' /etc/aide.conf FIPSR = p+i+n+u+g+s+m+growing+acl+selinux+xattrs+sha512 /usr/sbin/auditctl p+i+n+u+g+s+b+acl+xattrs+sha512 /usr/sbin/auditd p+i+n+u+g+s+b+acl+xattrs+sha512 /usr/sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512 /usr/sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512 /usr/sbin/augenrules p+i+n+u+g+s+b+acl+xattrs+sha512 DIR = p+i+n+u+g+acl+selinux+xattrs PERMS = p+i+u+g+acl+selinux Open the file and verify no additional uncommented file and directory selection lines are missing the "acl" rule. If the "acl" rule is not being used on all uncommented selection lines in the "/etc/aide.conf" file, or ACLs are not being checked by another file integrity tool, this is a finding.

    Fix

    Configure RHEL 10 so that the file integrity tool checks file and directory ACLs. If AIDE is installed, ensure the "acl" rule is present on all uncommented file and directory selection lists.

  42. RHEL-10-200635 CAT II V-280982 · SRG-OS-000404-GPOS-00183

    RHEL 10 must be configured so that the file integrity tool verifies extended attributes.

    Maps to SC-28(1) via CCI-002475
    Check

    Verify RHEL 10 AIDE is configured to verify extended attributes with the following command: $ sudo grep -E '^[^#]*xattrs' /etc/aide.conf FIPSR = p+i+n+u+g+s+m+growing+acl+selinux+xattrs+sha512 /usr/sbin/auditctl p+i+n+u+g+s+b+acl+xattrs+sha512 /usr/sbin/auditd p+i+n+u+g+s+b+acl+xattrs+sha512 /usr/sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512 /usr/sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512 /usr/sbin/augenrules p+i+n+u+g+s+b+acl+xattrs+sha512 DIR = p+i+n+u+g+acl+selinux+xattrs Open the file and verify that no additional uncommented file and directory selection lines are missing the "xattrs" rule. If the "xattrs" rule is not being used on all uncommented selection lines in the "/etc/aide.conf" file, or extended attributes are not being checked by another file integrity tool, this is a finding.

    Fix

    Configure RHEL 10 so that the file integrity tool checks file and directory extended attributes. If AIDE is installed, ensure the "xattrs" rule is present on all uncommented file and directory selection lists.

  43. RHEL-10-200640 CAT II V-280983 · SRG-OS-000479-GPOS-00224

    RHEL 10 must have the "rsyslog" package installed.

    Maps to AU-4(1), AU-6(4) via CCI-001851, CCI-000154
    Check

    Verify RHEL 10 has the "rsyslog" package installed with the following command: $ sudo dnf list --installed rsyslog Installed Packages rsyslog.x86_64 8.2412.0-1.el10 @AppStream If the "rsyslog" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "rsyslog" package installed with the following command: $ sudo dnf -y install rsyslog

  44. RHEL-10-200641 CAT II V-280984 · SRG-OS-000040-GPOS-00018

    RHEL 10 must have the rsyslog service set to active.

    Maps to AU-3 via CCI-000133
    Check

    Verify RHEL 10 rsyslog is active with the following command: $ systemctl is-active rsyslog active If the rsyslog service is not active, this is a finding.

    Fix

    Configure RHEL 10 to enable the rsyslog service with the following command: $ sudo systemctl enable --now rsyslog

  45. RHEL-10-200642 CAT II V-280985 · SRG-OS-000479-GPOS-00224

    RHEL 10 must be configured to forward audit records via Transmission Control Protocol (TCP) to a different system or media from the system being audited via rsyslog.

    Maps to AU-4(1) via CCI-001851
    Check

    Verify RHEL 10 audit system off-loads audit records onto a different system or media from the system being audited via rsyslog using TCP with the following commands: To check for legacy configuration syntax, perform the following: $ sudo grep -ir '@@' /etc/rsyslog.conf /etc/rsyslog.d/ To check for Rainer script syntax, perform the following: $ sudo grep -rq 'type="omfwd"' /etc/rsyslog.conf /etc/rsyslog.d/ If a remote server is not configured, or the line is commented out, ask the system administrator to indicate how the audit logs are off-loaded to a different system or media. If there is no evidence that the audit logs are being off-loaded to another system or media, this is a finding.

    Fix

    Configure RHEL 10 to off-load audit records onto a different system or media from the system being audited via TCP using rsyslog by specifying the remote logging server in "/etc/rsyslog.conf" or "/etc/rsyslog.d/[customfile].conf" with the name or IP address of the log aggregation server. Using legacy "@host:port" syntax example: *.* @@[remoteloggingserver]:[port] Using Rainer script example: action( type="omfwd" target="logserver.example.com" port="514" protocol="tcp" action.resumeRetryCount="-1" queue.type="linkedList" que.size="10000" ) Note: The Rainer script above does not contain the required encryption settings.

  46. RHEL-10-200643 CAT II V-280986 · SRG-OS-000420-GPOS-00186

    RHEL 10 must be configured so that the rsyslog daemon does not accept log messages from other servers unless the server is being used for log aggregation.

    Maps to SC-5 via CCI-002385
    Check

    Note: If the SA can demonstrate that another tool (e.g., SPLUNK) is being used to manage log off-load and aggregation in lieu of rsyslog, this check is not applicable. Verify RHEL 10 is not configured to receive remote logs using rsyslog. Verify the setting with the following commands: $ ss -tulnp | grep rsyslog If no output is returned, rsyslog is not listening for remote logs. If output appears, check for configured ports (514 is the default for syslog). Check for remote logging configuration in rsyslog by examining the rsyslog configuration files: $ sudo grep -E 'InputTCPServerRun|UDPServerRun|RELPServerRun|imtcp|imudp|imrelp' /etc/rsyslog.conf /etc/rsyslog.d/* If this command returns uncommented lines enabling network listeners, the system is accepting remote logs. If this system is not documented and authorized as a log aggregation server, this is a finding. Note: An error about no files or directories from the above commands may be returned. This is not a finding. Additionally, if a port option used together with a target and protocol is returned from inside an action block, this is not a finding.

    Fix

    Configure RHEL 10 to not receive remote logs using rsyslog. Remove the lines in "/etc/rsyslog.conf" and any files in the "/etc/rsyslog.d" directory that match any of the following: InputTCPServerRun UDPServerRun RELPServerRun module(load="imtcp") module(load="imudp") module(load="imrelp") input(type="imudp" port="514") input(type="imtcp" port="514") input(type="imrelp" port="514") Restart the rsyslog daemon with the following command for the changes to take effect: $ sudo systemctl restart rsyslog.service

  47. RHEL-10-200644 CAT II V-280987 · SRG-OS-000342-GPOS-00133

    RHEL 10 must authenticate the remote logging server for off-loading audit logs via "rsyslog".

    Maps to AU-4(1) via CCI-001851
    Check

    Verify RHEL 10 authenticates the remote logging server for off-loading audit logs with the following command: $ sudo grep -r -E 'streamdriver.authmode|streamdriver.permittedpeer|tls.authmode|tls.permittedpeer' /etc/rsyslog.conf /etc/rsyslog.d/ /etc/rsyslog.d/99-forwarding.conf: streamdriver.authmode="x509/name" If the variable name "streamdriver.authmode" is present in an omfwd statement block, this is not a finding. However, if the "streamdriver.authmode" variable is in a module block, this is a finding. If the value of the "$ActionSendStreamDriverAuthMode" or "streamdriver.authmode" or "tls.authmode" option is not set to "x509/name", or the line is commented out, ask the system administrator to indicate how the audit logs are off-loaded to a different system or media. Additionally, if the permittedpeer is not specified in either of the following formats, this is a finding: streamdriver.permittedpeer="rsyslog.server.example.com" tls.permittedpeer="rsyslog.server.example.com" If there is no evidence that the transfer of the audit logs being off-loaded to another system or media is encrypted, this is a finding.

    Fix

    Configure RHEL 10 to authenticate the remote logging server for off-loading audit logs by setting the following options in "/etc/rsyslog.d/99-forwarding.conf": streamdriver.authmode="x509/name" Specify the logserver to prevent man-in-the-middle attacks in the following format: streamdriver.permittedpeer="rsyslog.server.example.com"

  48. RHEL-10-200645 CAT II V-280988 · SRG-OS-000342-GPOS-00133

    RHEL 10 must encrypt the transfer of audit records off-loaded onto a different system or media from the system being audited via rsyslog.

    Maps to AU-4(1) via CCI-001851
    Check

    Verify RHEL 10 encrypts audit records offloaded onto a different system via rsyslog using the modern "omfwd" action. Search for active TLS-enabling configurations within "omfwd" action blocks with the following command: $ sudo grep -rE 'tls="on"|StreamDriver.Mode\s*=\s*"1"' /etc/rsyslog.conf /etc/rsyslog.d/ If an active TCP-based "omfwd" forwarding rule exists on the system but the command above returns no active configuration lines, or if all results are commented out, this is a finding.

    Fix

    Configure RHEL 10 to encrypt off-loaded audit records via rsyslog by enabling TLS within the "omfwd" action rule. Edit the configuration file containing the "omfwd" rule (e.g., /etc/rsyslog.d/99-forwarding.conf) and add the tls="on" parameter. Example: action( type="omfwd" target="logserver.example.com" protocol="tcp" port="6514" tls="on" ) After applying the configuration, restart the rsyslog service: $ sudo systemctl restart rsyslog

  49. RHEL-10-200646 CAT II V-280989 · SRG-OS-000342-GPOS-00133

    RHEL 10 must encrypt, via the gtls driver, the transfer of audit records off-loaded onto a different system or media from the system being audited via rsyslog.

    Maps to AU-4(1) via CCI-001851
    Check

    Verify RHEL 10 explicitly defines a TLS driver (gtls or ossl) for encrypted rsyslog off-loading. Search for an explicitly defined stream driver within "omfwd" action blocks with the following command: $ sudo grep -rE 'StreamDriver\s*=\s*"(gtls|ossl)"' /etc/rsyslog.conf /etc/rsyslog.d/ If TLS-based "omfwd" forwarding is configured, but the command above returns no active configuration lines specifying either "gtls" or "ossl" within the action block, this is a finding.

    Fix

    Configure RHEL 10 to explicitly define a TLS driver for rsyslog to use for encrypting off-loaded audit records. The "ossl" driver is required for environments operating in FIPS mode. Add the "streamdriver" parameter to the "omfwd" action rule in its configuration file (e.g., /etc/rsyslog.d/99-forwarding.conf). Example: action( type="omfwd" streamdriver="ossl" target="logserver.example.com" protocol="tcp" port="6514" tls="on" ) After applying the configuration, restart the rsyslog service: $ sudo systemctl restart rsyslog

  50. RHEL-10-200647 CAT II V-280990 · SRG-OS-000032-GPOS-00013

    RHEL 10 must monitor all remote access methods.

    Maps to AC-17(1) via CCI-000067
    Check

    Verify RHEL 10 monitors all remote access methods with the following command: $ sudo grep -rE '(auth.\*|authpriv.\*|daemon.\*)' /etc/rsyslog.conf /etc/rsyslog.d/ /etc/rsyslog.conf:authpriv.* /var/log/secure If "auth.*", "authpriv.*", or "daemon.*" are not configured to be logged, this is a finding.

    Fix

    Configure RHEL 10 to monitor all remote access methods. Add or update the following lines to the "/etc/rsyslog.conf" file or a file in "/etc/rsyslog.d": auth.*;authpriv.*;daemon.* /var/log/secure Restart the "rsyslog" service with the following command for the changes to take effect: $ sudo systemctl restart rsyslog.service

  51. RHEL-10-200648 CAT II V-280991 · SRG-OS-000040-GPOS-00018

    RHEL 10 must use cron logging.

    Maps to AU-3 via CCI-000133
    Check

    Verify RHEL 10 rsyslog is configured to log cron events with the following command: Note: If another logging package is used, substitute the utility configuration file for "/etc/rsyslog.conf" or "/etc/rsyslog.d/*.conf" files. $ grep -s "cron.\*" /etc/rsyslog.conf /etc/rsyslog.d/*.conf /etc/rsyslog.d/99-cron-stig.conf:cron.* action(type="omfile" file="/var/log/cron") If the command does not return a line demonstrating logging to /var/log/cron, perform a functional cron test. Inject a message into the cron logging facility with the following command: $ logger -p cron.info "STIG-TEST-CRON-LOGGING" Check if it successfully wrote to the dedicated log file with the following command: $ sudo grep "STIG-TEST-CRON-LOGGING" /var/log/cron Jul 16 11:33:00 RHEL10Sim pdosadmin[33692]: STIG-TEST-CRON-LOGGING If "rsyslog" is not logging messages for the cron facility or all facilities, this is a finding.

    Fix

    Configure RHEL 10 rsyslog to log all cron messages by adding or updating the following line to "/etc/rsyslog.conf" or a configuration file in the /etc/rsyslog.d/ directory: cron.* /var/log/cron The rsyslog daemon must be restarted for the changes to take effect: $ sudo systemctl restart rsyslog.service

  52. RHEL-10-200650 CAT II V-280992 · SRG-OS-000120-GPOS-00061

    RHEL 10 must have the packages required for encrypting off-loaded audit logs installed.

    Maps to IA-7 via CCI-000803
    Check

    Verify RHEL 10 has the "rsyslog-gnutls" package installed with the following command: $ sudo dnf list --installed rsyslog-gnutls Installed Packages rsyslog-gnutls.x86_64 8.2412.0-1.el10 @AppStream If the "rsyslog-gnutls" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "rsyslog-gnutls" package installed with the following command: $ sudo dnf -y install rsyslog-gnutls

  53. RHEL-10-200660 CAT II V-280993 · SRG-OS-000062-GPOS-00031

    RHEL 10 must have the "audit" package installed.

    Maps to AU-3, AU-3(1), AU-6(4), AU-7, AU-7(1), AU-8, AU-12, AU-12(3), AU-14(1), CM-5(1), MA-4(1) via CCI-000169, CCI-000130, CCI-000131, CCI-000132, CCI-000133, CCI-000134, CCI-000135, CCI-000154, CCI-000158, CCI-001876, CCI-001464, CCI-001487, CCI-001914, CCI-001875, CCI-001877, CCI-001878, CCI-001879, CCI-001880, CCI-001881, CCI-001882, CCI-001889, CCI-003938, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 has the "audit" service package installed with the following command: $ sudo dnf list --installed audit Installed Packages audit.x86_64 4.0.3-1.el10 @anaconda If the "audit" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "audit" service package installed with the following command: $ sudo dnf -y install audit

  54. RHEL-10-200661 CAT II V-280994 · SRG-OS-000062-GPOS-00031

    RHEL 10 must enable the audit service.

    Maps to AU-3, AU-3(1), AU-6(4), AU-7, AU-7(1), AU-8, AU-12, AU-12(3), AU-14(1), CM-5(1), MA-4(1) via CCI-000169, CCI-000130, CCI-000131, CCI-000132, CCI-000133, CCI-000134, CCI-000135, CCI-000154, CCI-000158, CCI-001876, CCI-001464, CCI-001487, CCI-001914, CCI-001875, CCI-001877, CCI-001878, CCI-001879, CCI-001880, CCI-001881, CCI-001882, CCI-001889, CCI-003938, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 enables the audit service to produce audit records with the following command: $ systemctl status auditd.service o auditd.service - Security Audit Logging Service Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; preset: enabled) Active: active (running) since Wed 2025-10-01 14:00:21 EDT; 1 week 6 days ago If the audit service is not "active" and "running", this is a finding.

    Fix

    Configure RHEL 10 to enable the auditd service with the following command: $ sudo systemctl enable --now auditd

  55. RHEL-10-200680 CAT II V-280996 · SRG-OS-000120-GPOS-00061

    RHEL 10 must have the "libreswan" package installed.

    Maps to IA-7 via CCI-000803
    Check

    Note: If there is no operational need for Libreswan to be installed, this rule is not applicable. Verify RHEL 10 has the "libreswan" service package installed with the following command: $ sudo dnf list --installed libreswan Installed Packages libreswan.x86_64 5.2-1.el10_0 @AppStream If the "libreswan" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "libreswan" service package installed with the following command: $ sudo dnf -y install libreswan

  56. RHEL-10-200690 CAT II V-280997 · SRG-OS-000046-GPOS-00022

    RHEL 10 must notify designated personnel if baseline configurations are changed in an unauthorized manner.

    Maps to AU-5 via CCI-000139
    Check

    Verify RHEL 10 is configured to allow sending email notifications. Note: The "postfix" package provides the "mail" command that is used to send email messages. Verify that the "postfix" package is installed on the system: $ sudo dnf list --installed postfix Installed Packages postfix.x86_64 2:3.8.5-8.el10 @AppStream If the "postfix" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to notify designated personnel if baseline configurations are changed in an unauthorized manner. Install the postfix package with the following command: $ sudo dnf -y install postfix

  57. RHEL-10-200691 CAT II V-280998 · SRG-OS-000046-GPOS-00022

    RHEL 10 must have mail aliases to notify the information system security officer (ISSO) and system administrator (SA) (at a minimum) of an audit processing failure.

    Maps to AU-5 via CCI-000139
    Check

    Verify RHEL 10 is configured to notify the appropriate interactive users of an audit processing failure. Find the alias maps that are being used with the following command: $ postconf alias_maps alias_maps = lmdb:/etc/aliases Query the Postfix alias maps for an alias for the root user with the following command: $ postmap -q root lmdb:/etc/aliases ISSO If an alias is not set, this is a finding.

    Fix

    Configure RHEL 10 to have mail aliases notify the ISSO and SA (at a minimum) of an audit processing failure. Edit the aliases map file (by default /etc/aliases) used by Postfix and configure a root alias (using the user ISSO as an example): root: ISSO Update the aliases database with the following command: $ sudo newaliases

  58. RHEL-10-200692 CAT II V-280999 · SRG-OS-000095-GPOS-00049

    RHEL 10 must be configured to prevent unrestricted mail relaying.

    Maps to CM-7 via CCI-000381
    Check

    Note: If postfix is not installed, this is not applicable. Verify RHEL 10 is configured to prevent unrestricted mail relaying with the following command: $ postconf -n smtpd_client_restrictions smtpd_client_restrictions = permit_mynetworks,reject If the "smtpd_client_restrictions" parameter contains any entries other than "permit_mynetworks" and "reject", and the additional entries have not been documented with the information system security officer, this is a finding.

    Fix

    Configure RHEL 10 so that the postfix configuration file restricts client connections to the local network with the following command: $ sudo postconf -e 'smtpd_client_restrictions = permit_mynetworks,reject'

  59. RHEL-10-200700 CAT II V-281000 · SRG-OS-000095-GPOS-00049

    RHEL 10 must have the "cronie" package installed.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 has the "cronie" package installed with the following command: $ sudo dnf list --installed cronie Installed Packages cronie.x86_64 1.7.0-9.el10 @anaconda If the "cronie" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "cronie" package installed with the following command: $ sudo dnf -y install cronie

  60. RHEL-10-200720 CAT II V-281001 · SRG-OS-000423-GPOS-00187

    RHEL 10 must have a Secure Shell (SSH) server installed for all networked systems.

    Maps to SC-8, SC-8(1), SC-8(2) via CCI-002418, CCI-002421, CCI-002420, CCI-002422
    Check

    Verify RHEL 10 has the "openssh-server" package installed with the following command: $ sudo dnf list --installed openssh-server Installed Packages openssh-server.x86_64 9.9p1-7.el10_0 @anaconda If the "openssh-server" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "openssh-server" package installed with the following command: $ sudo dnf -y install openssh-server

  61. RHEL-10-200721 CAT II V-281002 · SRG-OS-000423-GPOS-00187

    RHEL 10 must, for all networked systems, have and implement Secure Shell (SSH) to protect the confidentiality and integrity of transmitted and received information.

    Maps to SC-8, SC-8(1), SC-8(2) via CCI-002418, CCI-002421, CCI-002420, CCI-002422
    Check

    Verify RHEL 10 "sshd" is active with the following command: $ systemctl is-active sshd active If the "sshd" service is not active, this is a finding.

    Fix

    Configure RHEL 10 to enable the sshd service by running the following command: $ systemctl enable --now sshd

  62. RHEL-10-200722 CAT II V-281003 · SRG-OS-000095-GPOS-00049

    RHEL 10 must have the "openssh-clients" package installed.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 has the "openssh-clients" package installed with the following command: $ sudo dnf list --installed openssh-clients Installed Packages openssh-clients.x86_64 9.9p1-7.el10_0 @anaconda If the "openssh-clients" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "openssh-clients" package installed with the following command: $ sudo dnf -y install openssh-clients

  63. RHEL-10-200730 CAT II V-281005 · SRG-OS-000105-GPOS-00052

    RHEL 10 must have the "pkcs11-provider" package installed.

    Maps to IA-2(1), IA-2(6), IA-2(12) via CCI-000765, CCI-004046, CCI-001954
    Check

    Note: If the system administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable. Verify RHEL 10 has the "pkcs11-provider" package installed with the following command: $ sudo dnf list --installed pkcs11-provider Installed Packages pkcs11-provider.x86_64 1.0-3.el10_0 @rhel-10-for-x86_64-baseos-rpms If the "pkcs11-provider" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "pkcs11-provider" package installed with the following command: $ sudo dnf -y install pkcs11-provider

  64. RHEL-10-200740 CAT II V-281006 · SRG-OS-000095-GPOS-00049

    RHEL 10 must have the "gnutls-utils" package installed.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 has the "gnutls-utils" package installed with the following command: $ sudo dnf list --installed gnutls-utils Installed Packages gnutls-utils.x86_64 3.8.9-9.el10_0.14 @rhel-10-for-x86_64-appstream-rpms If the "gnutls-utils" package is not installed, this is a finding.

    Fix

    Configure RHEL 10 to have the "gnutls-utils" package installed with the following command: $ sudo dnf -y install gnutls-utils

  65. RHEL-10-400000 CAT II V-281017 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/group" file is owned by root.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that "/etc/group" file is owned by "root" with the following command: $ sudo stat -c "%U %n" /etc/group root /etc/group If the "/etc/group" file does not have an owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the owner of the file "/etc/group" is set to "root" by running the following command: $ sudo chown root /etc/group

  66. RHEL-10-400005 CAT II V-281018 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/group" file is group-owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/group" file is group-owned by "root" with the following command: $ sudo stat -c "%G %n" /etc/group root /etc/group If the "/etc/group" file does not have a group owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the group of the file "/etc/group" is set to "root" by running the following command: $ sudo chgrp root /etc/group

  67. RHEL-10-400010 CAT II V-281019 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/group-" file is owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/group-" file is owned by "root" with the following command: $ sudo stat -c "%U %n" /etc/group- root /etc/group- If the "/etc/group-" file does not have an owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the owner of the "/etc/group-" file is set to "root" by running the following command: $ sudo chown root /etc/group-

  68. RHEL-10-400015 CAT II V-281020 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/group-" file is group-owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/group-" file is group-owned by "root" with the following command: $ sudo stat -c "%G %n" /etc/group- root /etc/group- If the "/etc/group-" file does not have a group owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the group of the "/etc/group-" file is set to "root" by running the following command: $ sudo chgrp root /etc/group-

  69. RHEL-10-400020 CAT II V-281021 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/gshadow" file is owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/gshadow" file is owned by "root" with the following command: $ sudo stat -c "%U %n" /etc/gshadow root /etc/gshadow If the "/etc/gshadow" file does not have an owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the owner of the file "/etc/gshadow" is set to "root" by running the following command: $ sudo chown root /etc/gshadow

  70. RHEL-10-400025 CAT II V-281022 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/gshadow" file is group-owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/gshadow" file is group-owned by "root" with the following command: $ sudo stat -c "%G %n" /etc/gshadow root /etc/gshadow If the "/etc/gshadow" file does not have a group owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the group of the "/etc/gshadow" file is set to "root" by running the following command: $ sudo chgrp root /etc/gshadow

  71. RHEL-10-400030 CAT II V-281023 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/gshadow-" file is owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/gshadow-" file is owned by "root" with the following command: $ sudo stat -c "%U %n" /etc/gshadow- root /etc/gshadow- If the "/etc/gshadow-" file does not have an owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the owner of the "/etc/gshadow-" file is set to "root" by running the following command: $ sudo chown root /etc/gshadow-

  72. RHEL-10-400035 CAT II V-281024 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/gshadow-" file is group-owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/gshadow-" file is group-owned by "root" with the following command: $ sudo stat -c "%G %n" /etc/gshadow- root /etc/gshadow- If the "/etc/gshadow-" file does not have a group owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the group of the "/etc/gshadow-" file is set to "root" by running the following command: $ sudo chgrp root /etc/gshadow-

  73. RHEL-10-400040 CAT II V-281025 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/passwd" file is owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/passwd" file is owned by "root" with the following command: $ sudo stat -c "%U %n" /etc/passwd root /etc/passwd If the "/etc/passwd" file does not have an owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the owner of the "/etc/passwd" file is set to "root" by running the following command: $ sudo chown root /etc/passwd

  74. RHEL-10-400045 CAT II V-281026 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/passwd" file is group-owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/passwd" file is group-owned by "root" with the following command: $ sudo stat -c "%G %n" /etc/passwd root /etc/passwd If the "/etc/passwd" file does not have a group owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the group of the "/etc/passwd" file is set to "root" by running the following command: $ sudo chgrp root /etc/passwd

  75. RHEL-10-400050 CAT II V-281027 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/passwd-" file is owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/passwd-" file is owned by "root" with the following command: $ sudo stat -c "%U %n" /etc/passwd- root /etc/passwd- If the "/etc/passwd-" file does not have an owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the owner of the "/etc/passwd-" file is set to "root" by running the following command: $ sudo chown root /etc/passwd-

  76. RHEL-10-400055 CAT II V-281028 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/passwd-" file is group-owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/passwd-" file is group-owned by "root" with the following command: $ sudo stat -c "%G %n" /etc/passwd- root /etc/passwd- If the "/etc/passwd-" file does not have a group owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the group of the "/etc/passwd-" file is set to "root" by running the following command: $ sudo chgrp root /etc/passwd-

  77. RHEL-10-400060 CAT II V-281029 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/shadow" file is owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/shadow" file is owned by "root" with the following command: $ sudo stat -c "%U %n" /etc/shadow root /etc/shadow If the "/etc/shadow" file does not have an owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the owner of the "/etc/shadow" file is set to "root" by running the following command: $ sudo chown root /etc/shadow

  78. RHEL-10-400065 CAT II V-281030 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/shadow" file is group-owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/shadow" file is group-owned by "root" with the following command: $ sudo stat -c "%G %n" /etc/shadow root /etc/shadow If the "/etc/shadow" file does not have a group owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the group of the "/etc/shadow" file is set to "root" by running the following command: $ sudo chgrp root /etc/shadow

  79. RHEL-10-400070 CAT II V-281031 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/shadow-" file is owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/shadow-" file is owned by "root" with the following command: $ sudo stat -c "%U %n" /etc/shadow- root /etc/shadow- If the "/etc/shadow-" file does not have an owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the owner of the "/etc/shadow-" file is set to "root" by running the following command: $ sudo chown root /etc/shadow-

  80. RHEL-10-400075 CAT II V-281032 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the "/etc/shadow-" file is group-owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/shadow-" file is group-owned by "root" with the following command: $ sudo stat -c "%G %n" /etc/shadow- root /etc/shadow- If the "/etc/shadow-" file does not have a group owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the group of the "/etc/shadow-" file is set to "root" by running the following command: $ sudo chgrp root /etc/shadow-

  81. RHEL-10-400080 CAT II V-281033 · SRG-OS-000206-GPOS-00084

    RHEL 10 must be configured so that the "/var/log" directory is owned by "root".

    Maps to SI-11 via CCI-001314
    Check

    Verify RHEL 10 is configured so that the "/var/log" directory is owned by "root" with the following command: $ stat -c "%U %n" /var/log root /var/log If "/var/log" does not have an owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the owner of the directory "/var/log" is set to "root" by running the following command: $ sudo chown root /var/log

  82. RHEL-10-400085 CAT II V-281034 · SRG-OS-000206-GPOS-00084

    RHEL 10 must be configured so that the "/var/log" directory is group-owned by "root".

    Maps to SI-11 via CCI-001314
    Check

    Verify RHEL 10 is configured so that the "/var/log" directory is group-owned by "root" with the following command: $ stat -c "%G %n" /var/log root /var/log If "/var/log" does not have a group owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the group owner of the directory "/var/log" is set to "root" by running the following command: $ sudo chgrp root /var/log

  83. RHEL-10-400090 CAT II V-281035 · SRG-OS-000206-GPOS-00084

    RHEL 10 must be configured so that the "/var/log/"messages file is owned by root.

    Maps to SI-11 via CCI-001314
    Check

    Verify RHEL 10 is configured so that the "/var/log/messages" file is owned by root with the following command: $ stat -c "%U %n" /var/log/messages root /var/log/messages If "/var/log/messages" does not have an owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the owner of the "/var/log/messages" file is set to "root" by running the following command: $ sudo chown root /var/log/messages

  84. RHEL-10-400095 CAT II V-281036 · SRG-OS-000206-GPOS-00084

    RHEL 10 must be configured so that the "/var/log/messages" file is group-owned by "root".

    Maps to SI-11 via CCI-001314
    Check

    Verify RHEL 10 is configured so that the "/var/log/messages" file is group-owned by "root" with the following command: $ stat -c "%G %n" /var/log/messages root /var/log/messages If "/var/log/messages" does not have a group owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the group owner of the "/var/log/messages" file is set to "root" by running the following command: $ sudo chgrp root /var/log/messages

  85. RHEL-10-400100 CAT II V-281037 · SRG-OS-000259-GPOS-00100

    RHEL 10 must be configured so that system commands are owned by "root".

    Maps to CM-5(6) via CCI-001499
    Check

    Verify RHEL 10 is configured so that the system commands contained in the following directories are owned by "root" with the following command: $ sudo find -L /bin /sbin /usr/bin /usr/sbin /usr/libexec /usr/local/bin /usr/local/sbin ! -user root -exec stat -L -c "%U %n" {} \; If any system commands are found to not be owned by root, this is a finding.

    Fix

    Configure RHEL 10 so that the system commands are protected from unauthorized access. Run the following command, replacing "[FILE]" with any system command file not owned by "root". $ sudo chown root [FILE]

  86. RHEL-10-400105 CAT II V-281038 · SRG-OS-000259-GPOS-00100

    RHEL 10 must be configured so that system commands are group-owned by root or a system account.

    Maps to CM-5(6) via CCI-001499
    Check

    Verify RHEL 10 is configured so that the system commands contained in the following directories are group-owned by "root", or a required system account, with the following command: $ sudo find -L /bin /sbin /usr/bin /usr/sbin /usr/libexec /usr/local/bin /usr/local/sbin ! -group root -exec stat -L -c "%G %n" {} \; If any system commands are returned and are not group-owned by "root" or a required system account, this is a finding.

    Fix

    Configure RHEL 10 so that the system commands are protected from unauthorized access. Run the following command, replacing "[FILE]" with any system command file not group-owned by "root" or a required system account. $ sudo chgrp root [FILE]

  87. RHEL-10-400110 CAT II V-281039 · SRG-OS-000259-GPOS-00100

    RHEL 10 must be configured so that library files are owned by "root".

    Maps to CM-5(6) via CCI-001499
    Check

    Verify RHEL 10 is configured so that the systemwide shared library files are owned by "root" with the following command: $ sudo find -L /lib /lib64 /usr/lib /usr/lib64 ! -user root ! -type d -exec stat -L -c "%U %n" {} \; If any systemwide shared library file is not owned by root, this is a finding.

    Fix

    Configure RHEL 10 so that the systemwide shared library files (/lib, /lib64, /usr/lib, and /usr/lib64) are protected from unauthorized access. Run the following command, replacing "[FILE]" with any library file not owned by "root". $ sudo chown root [FILE]

  88. RHEL-10-400115 CAT II V-281040 · SRG-OS-000259-GPOS-00100

    RHEL 10 must be configured so that library files are group-owned by "root" or a system account.

    Maps to CM-5(6) via CCI-001499
    Check

    Verify RHEL 10 is configured so that the systemwide shared library files are group-owned by "root" or a system account with the following command: $ sudo find -L /lib /lib64 /usr/lib /usr/lib64 ! -group root ! -type d -exec stat -L -c "%G %n" {} \; If any systemwide shared library file is returned and is not group-owned by "root" or a required system account, this is a finding.

    Fix

    Configure RHEL 10 so that the systemwide shared library files (/lib, /lib64, /usr/lib, and /usr/lib64) are protected from unauthorized access. Run the following command, replacing "[FILE]" with any library file not group-owned by "root". $ sudo chgrp root [FILE]

  89. RHEL-10-400120 CAT II V-281041 · SRG-OS-000259-GPOS-00100

    RHEL 10 must be configured so that library directories are owned by "root".

    Maps to CM-5(6) via CCI-001499
    Check

    Verify RHEL 10 is configured so that the systemwide shared library directories are owned by "root" with the following command: $ sudo find /lib /lib64 /usr/lib /usr/lib64 ! -user root -type d -exec stat -c "%U %n" {} \; If any systemwide shared library directory is not owned by "root", this is a finding.

    Fix

    Configure RHEL 10 so that the systemwide shared library directories (/lib, /lib64, /usr/lib, and /usr/lib64) are protected from unauthorized access. Run the following command, replacing "[DIRECTORY]" with any library directory not owned by "root". $ sudo chown root [DIRECTORY]

  90. RHEL-10-400125 CAT II V-281042 · SRG-OS-000259-GPOS-00100

    RHEL 10 must be configured so that library directories are group-owned by "root" or a system account.

    Maps to CM-5(6) via CCI-001499
    Check

    Verify RHEL 10 is configured so that the systemwide shared library directories are group-owned by "root" or a system account with the following command: $ sudo find /lib /lib64 /usr/lib /usr/lib64 ! -group root -type d -exec stat -c "%G %n" {} \; If any systemwide shared library directory is returned and is not group-owned by "root" or a required system account, this is a finding.

    Fix

    Configure RHEL 10 so that the systemwide shared library directories (/lib, /lib64, /usr/lib and /usr/lib64) are protected from unauthorized access. Run the following command, replacing "[DIRECTORY]" with any library directory not group-owned by "root". $ sudo chgrp root [DIRECTORY]

  91. RHEL-10-400130 CAT II V-281043 · SRG-OS-000445-GPOS-00199

    RHEL 10 must be configured so that cron configuration file directories are owned by root.

    Maps to SI-6 via CCI-002696
    Check

    Verify RHEL 10 ownership of all cron configuration files with the following command: $ stat -c "%U %n" /etc/cron* root /etc/cron.d root /etc/cron.daily root /etc/cron.deny root /etc/cron.hourly root /etc/cron.monthly root /etc/crontab root /etc/cron.weekly If any crontab is not owned by root, this is a finding.

    Fix

    Configure RHEL 10 so that cron configuration file directories are owned by root with the following command: $ sudo chown root [cron config file]

  92. RHEL-10-400135 CAT II V-281044 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that cron configuration files directories are group-owned by root.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 group ownership of all cron configuration files with the following command: $ stat -c "%G %n" /etc/cron* root /etc/cron.d root /etc/cron.daily root /etc/cron.deny root /etc/cron.hourly root /etc/cron.monthly root /etc/crontab root /etc/cron.weekly If any crontab is not group-owned by "root", this is a finding.

    Fix

    Configure RHEL 10 so that any cron configuration file directories are group-owned by "root" with the following command: $ sudo chgrp root [cron config file]

  93. RHEL-10-400140 CAT II V-281045 · SRG-OS-000138-GPOS-00069

    RHEL 10 must be configured so that world-writable directories are owned by root, sys, bin, or an application user.

    Maps to SC-4 via CCI-001090
    Check

    Verify RHEL 10 world-writable directories are owned by root, a system account, or an application account with the following command: $ sudo find / -xdev -type d -perm -0002 -uid +999 -exec stat -c "%U, %u, %A, %n" {} \; 2>/dev/null If output indicates that world-writable directories are owned by any account other than root or an approved system account, this is a finding.

    Fix

    Configure RHEL 10 public directories to be owned by root or a system account to prevent unauthorized and unintended information transferred via shared system resources. Use the following command template to set ownership of public directories to root or a system account: $ sudo chown [root or system account] [Public Directory]

  94. RHEL-10-400145 CAT II V-281046 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that all system device files are correctly labeled to prevent unauthorized modification.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that all system device files are correctly labeled to prevent unauthorized modification. List all device files on the system that are incorrectly labeled with the following commands: Note: Device files are normally found under "/dev", but applications may place device files in other directories and may necessitate a search of the entire system. $ sudo find /dev -context *:device_t:* \( -type c -o -type b \) -printf "%p %Z\n" $ sudo find /dev -context *:unlabeled_t:* \( -type c -o -type b \) -printf "%p %Z\n" Note: There are device files, such as "/dev/vmci", that are used when the operating system is a host virtual machine. They will not be owned by a user on the system and require the "device_t" label to operate. These device files are not a finding. If there is output from either of these commands, other than already noted, this is a finding.

    Fix

    Configure RHEL 10 so that all system device files are correctly labeled to prevent unauthorized modification. Restore the SELinux policy for the affected device file from the system policy database using the following command: $ sudo restorecon -v Substitute "" with the path to the affected device file (from the output of the previous commands). An example device file path would be "/dev/ttyUSB0". If the output of the above command does not indicate that the device was relabeled to a more specific SELinux type label, the SELinux policy of the system must be updated with more specific policy for the device class specified. If a package was used to install support for a device class, that package could be reinstalled using the following command: $ sudo dnf reinstall If a package was not used to install the SELinux policy for a given device class, it must be generated manually and provide specific type labels.

  95. RHEL-10-400150 CAT II V-281047 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the Secure Shell (SSH) server configuration file is group-owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/ssh/sshd_config" file and the contents of "/etc/ssh/sshd_config.d" are group-owned by "root" with the following command: $ sudo find /etc/ssh/sshd_config /etc/ssh/sshd_config.d -exec stat -c "%G %n" {} \; root /etc/ssh/sshd_config root /etc/ssh/sshd_config.d root /etc/ssh/sshd_config.d/50-cloud-init.conf root /etc/ssh/sshd_config.d/50-redhat.conf If the "/etc/ssh/sshd_config" file or "/etc/ssh/sshd_config.d" or any files in the "sshd_config.d" directory do not have a group owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the "/etc/ssh/sshd_config" file and the contents of "/etc/ssh/sshd_config.d" are group-owned by "root" with the following command: $ sudo chgrp root /etc/ssh/sshd_config /etc/ssh/sshd_config.d

  96. RHEL-10-400155 CAT II V-281048 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the Secure Shell (SSH) server configuration file is owned by "root".

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/ssh/sshd_config" file and the contents of "/etc/ssh/sshd_config.d" are owned by root with the following command: $ sudo find /etc/ssh/sshd_config /etc/ssh/sshd_config.d -exec stat -c "%U %n" {} \; root /etc/ssh/sshd_config root /etc/ssh/sshd_config.d root /etc/ssh/sshd_config.d/50-cloud-init.conf root /etc/ssh/sshd_config.d/50-redhat.conf If the "/etc/ssh/sshd_config" file or "/etc/ssh/sshd_config.d" or any files in the "sshd_config.d" directory do not have an owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the "/etc/ssh/sshd_config" file and the contents of "/etc/ssh/sshd_config.d" are owned by "root" with the following command: $ sudo chown -R root /etc/ssh/sshd_config /etc/ssh/sshd_config.d

  97. RHEL-10-400160 CAT II V-281049 · SRG-OS-000080-GPOS-00048

    RHEL 10 must ensure that all local interactive user home directories are group-owned by the home directory owner's primary group.

    Maps to AC-3, SC-5 via CCI-000213, CCI-002385
    Check

    Verify RHEL 10 interactive users' home directories are group-owned by the user's primary GID with the following command: Note: This may miss local interactive users that have been assigned a privileged user identifier (UID). Evidence of interactive use may be obtained from several log files containing system login information. The returned directory "/home/disauser" is used as an example. $ sudo ls -ld $(awk -F: '($3>=1000)&&($7 !~ /nologin/){print $6}' /etc/passwd) drwxr-x--- 2 disauser admin 4096 Jun 5 12:41 disauser Check the user's primary group with the following command: $ sudo grep $(grep disauser /etc/passwd | awk -F: '{print $4}') /etc/group admin:x:250:disauser,doduser,nsauser If the user home directory referenced in "/etc/passwd" is not group-owned by that user's primary GID, this is a finding.

    Fix

    Configure RHEL 10 interactive users' home directories to be group-owned by the user's primary GID. Change the group owner of a local interactive user's home directory to the group found in "/etc/passwd". To change the group owner of a local interactive user's home directory, use the following command: Note: The example will be for the user "disauser", who has a home directory of "/home/disauser" and has a primary group of users. $ sudo chgrp users /home/disauser

  98. RHEL-10-400165 CAT II V-281050 · SRG-OS-000057-GPOS-00027

    RHEL 10 must enforce group ownership of audit logs by "root" or by a restricted logging group to prevent unauthorized read access.

    Maps to AU-9, SI-11 via CCI-000162, CCI-000163, CCI-000164, CCI-001314
    Check

    Verify RHEL 10 audit logs are group-owned by "root" or a restricted logging group. Determine where the audit logs are stored with the following command: $ sudo grep -iw log_file /etc/audit/auditd.conf log_file = /var/log/audit/audit.log Using the location of the audit log file, determine if the audit log is group-owned by "root" using the following command: $ sudo stat -c "%G %n" /var/log/audit/audit.log root /var/log/audit/audit.log If the audit log is not group-owned by "root" or the configured alternative logging group, this is a finding.

    Fix

    Configure RHEL 10 to prevent unauthorized read access by ensuring that audit logs are group-owned by root or by a restricted logging group. Change the group of the directory of "/var/log/audit" to be owned by a correct group. Identify the group that is configured to own audit logs: $ sudo grep -P '^[ ]*log_group[ ]+=.*$' /etc/audit/auditd.conf Change the ownership to that group: $ sudo chgrp ${GROUP} /var/log/audit

  99. RHEL-10-400170 CAT II V-281051 · SRG-OS-000057-GPOS-00027

    RHEL 10 must enforce "root" ownership of the audit log directory to prevent unauthorized read access.

    Maps to AU-9, SI-11 via CCI-000162, CCI-000163, CCI-000164, CCI-001314
    Check

    Verify RHEL 10 audit logs directory is owned by "root". Determine where the audit logs are stored with the following command: $ sudo grep -iw log_file /etc/audit/auditd.conf log_file = /var/log/audit/audit.log Using the location of the audit log file, determine if the audit log directory is owned by "root" using the following command: $ sudo stat -c '%U %n' /var/log/audit root /var/log/audit If the audit log directory is not owned by "root", this is a finding.

    Fix

    Configure RHEL 10 to prevent unauthorized read access by ensuring the audit log directory is "root" owned with the following command: $ sudo chown root /var/log/audit

  100. RHEL-10-400175 CAT II V-281052 · SRG-OS-000057-GPOS-00027

    RHEL 10 must enforce "root" ownership of audit logs to prevent unauthorized access.

    Maps to AU-9, SI-11 via CCI-000162, CCI-000163, CCI-000164, CCI-001314
    Check

    Verify RHEL 10 enforces "root" ownership of audit logs to prevent unauthorized access. Determine where the audit logs are stored with the following command: $ sudo grep "^log_file" /etc/audit/auditd.conf log_file = /var/log/audit/audit.log Using the location of the audit log file, determine if the audit log files are owned by "root" using the following command: $ sudo ls -la /var/log/audit/audit.log rw-------. 2 root root 237923 Jun 11 11:56 /var/log/audit/audit.log If the audit logs are not owned by "root", this is a finding.

    Fix

    Configure RHEL 10 to enforce "root" ownership of audit logs to prevent unauthorized access with the following command: $ sudo chown root [audit_log_file] Replace "[audit_log_file]" with the correct audit log path. By default this location is "/var/log/audit/audit.log".

  101. RHEL-10-400180 CAT II V-281053 · SRG-OS-000057-GPOS-00027

    RHEL 10 must enforce group ownership by "root" or a restricted logging group for audit log files to prevent unauthorized access.

    Maps to AU-9, SI-11 via CCI-000162, CCI-000163, CCI-000164, CCI-001314
    Check

    Verify RHEL 10 enforces group ownership by "root" or a restricted logging group for audit log files to prevent unauthorized access. Determine where the audit logs are stored with the following command: $ sudo grep "^log_file" /etc/audit/auditd.conf log_file = /var/log/audit/audit.log Determine the audit log group by running the following command: $ sudo grep -P '^[ ]*log_group[ ]+=.*$' /etc/audit/auditd.conf log_group = root Check that the audit log file is owned by the correct group. Run the following command to display the owner of the audit log file: $ sudo stat -c "%n %G" /var/log/audit/audit.log /var/log/audit/audit.log root The audit log file must be owned by the "log_group" or by "root" if the "log_group" is not specified. If audit log files are owned by the incorrect group, this is a finding.

    Fix

    Configure RHEL 10 to enforce group ownership by "root" or a restricted logging group for audit log files to prevent unauthorized access. Identify the group that is configured to own the audit log: $ sudo grep -P '^[ ]*log_group[ ]+=.*$' /etc/audit/auditd.conf Change the ownership to that group using the following command: $ sudo chgrp ${log_group} ${log_file}

  102. RHEL-10-400185 CAT II V-281054 · SRG-OS-000057-GPOS-00027

    RHEL 10 must set mode "0600" or less permissive for the audit logs file to prevent unauthorized access to the audit log.

    Maps to AU-9, SI-11 via CCI-000162, CCI-000163, CCI-000164, CCI-001314
    Check

    Verify RHEL 10 audit logs have a mode of "0600". Determine where the audit logs are stored with the following command: $ sudo grep "^log_file" /etc/audit/auditd.conf log_file = /var/log/audit/audit.log Using the location of the audit log file, determine the mode of each audit log with the following command: $ sudo find /var/log/audit/ -type f -exec stat -c '%a %n' {} \; 600 /var/log/audit/audit.log If the audit logs have a mode more permissive than "0600", this is a finding.

    Fix

    Configure RHEL 10 audit logs to have a mode of "0600" with the following command: Replace "[audit_log_file]" with the path to each audit log file. By default, these logs are located in "/var/log/audit/": $ sudo chmod 0600 /var/log/audit/[audit_log_file] Check the group that owns the system audit logs: $ sudo grep -iw log_group /etc/audit/auditd.conf If "log_group" is set to a user other than "root", configure the permissions the following way: $ sudo chmod 0640 $log_file $ sudo chmod 0440 $log_file.* Otherwise, configure the permissions the following way: $ sudo chmod 0600 $log_file $ sudo chmod 0400 $log_file.*

  103. RHEL-10-400190 CAT II V-281055 · SRG-OS-000057-GPOS-00027

    RHEL 10 must enforce the audit log directory to have a mode of "0750" or less permissive to prevent unauthorized read access.

    Maps to AU-9 via CCI-000162, CCI-000163, CCI-000164
    Check

    Verify RHEL 10 enforces the audit log directory to have a mode of "0750" or less permissive to prevent unauthorized read access. Determine where the audit logs are stored with the following command: $ sudo grep "^log_file" /etc/audit/auditd.conf log_file = /var/log/audit/audit.log Find the group that owns audit logs: $ sudo grep "^log_group" /etc/audit/auditd.conf log_group = root Run the following command to check the mode of the system audit logs: $ sudo stat -c "%a %n" [audit_log_directory] Replace "[audit_log_directory]" to the correct audit log directory path; by default this location is "/var/log/audit". If the log_group is "root" or is not set, the correct permissions are "0700". If the log_group is owned by anyone other than "root", the correct permissions are "0750". If audit logs have a more permissive mode than is required, this is a finding.

    Fix

    Configure RHEL 10 so that the audit log directories have a mode of "0750" or less permissive to prevent unauthorized read access with the following command: $ sudo chmod 0700 /var/log/audit Note: The correct permissions are "0700" if the directory is owned by "root"; otherwise, the correct permissions are "0750". Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  104. RHEL-10-400195 CAT II V-281056 · SRG-OS-000063-GPOS-00032

    RHEL 10 must enforce root ownership of the "/etc/audit/" directory.

    Maps to AU-12 via CCI-000171
    Check

    Verify RHEL 10 enforces root ownership of the "/etc/audit/" directory with the following command: $ sudo stat -c "%U %n" /etc/audit/ root /etc/audit/ If the "/etc/audit/" directory does not have an owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the "/etc/audit/" directory is owned by "root" with the following command: $ sudo chown root /etc/audit/

  105. RHEL-10-400200 CAT II V-281057 · SRG-OS-000063-GPOS-00032

    RHEL 10 must enforce root group ownership of the "/etc/audit/" directory.

    Maps to AU-12 via CCI-000171
    Check

    Verify RHEL 10 enforces root group ownership of the "/etc/audit/" directory with the following command: $ sudo stat -c "%G %n" /etc/audit/ root /etc/audit/ If "/etc/audit/" does not have a group owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the "/etc/audit/" directory is group-owned by "root" with the following command: $ sudo chgrp root /etc/audit/

  106. RHEL-10-400205 CAT II V-281058 · SRG-OS-000259-GPOS-00100

    RHEL 10 must enforce mode "755" or less permissive for system commands.

    Maps to CM-5(6) via CCI-001499
    Check

    Verify RHEL 10 is configured so that the system commands contained in the following directories have mode "755" or less permissive with the following command: $ sudo find -L /bin /sbin /usr/bin /usr/sbin /usr/libexec /usr/local/bin /usr/local/sbin -perm /022 -exec ls -l {} \; If any system commands are found to be group-writable or world-writable, this is a finding.

    Fix

    Configure RHEL 10 so that the system commands to be protected from unauthorized access. Run the following command, replacing "[FILE]" with any system command with a mode more permissive than "755". $ sudo chmod 755 [FILE]

  107. RHEL-10-400210 CAT II V-281059 · SRG-OS-000259-GPOS-00100

    RHEL 10 must enforce mode "755" or less permissive on library directories.

    Maps to CM-5(6) via CCI-001499
    Check

    Verify RHEL 10 is configured so that the systemwide shared library directories have mode "755" or less permissive with the following command: $ sudo find -L /lib /lib64 /usr/lib /usr/lib64 -perm /022 -type d -exec ls -l {} \; If any systemwide shared library file is found to be group-writable or world-writable, this is a finding.

    Fix

    Configure RHEL 10 so that the systemwide shared library directories (/lib, /lib64, /usr/lib, and /usr/lib64) are protected from unauthorized access. Run the following command, replacing "[DIRECTORY]" with any library directory with a mode more permissive than "755". $ sudo chmod 755 [DIRECTORY]

  108. RHEL-10-400215 CAT II V-281060 · SRG-OS-000259-GPOS-00100

    RHEL 10 must enforce mode "755" or less permissive for library files.

    Maps to CM-5(6) via CCI-001499
    Check

    Verify RHEL 10 is configured so that the systemwide shared library files contained in the following directories have mode "755" or less permissive with the following command: $ sudo find -L /lib /lib64 /usr/lib /usr/lib64 -perm /022 -type f -exec ls -l {} \; If any systemwide shared library file is found to be group-writable or world-writable, this is a finding.

    Fix

    Configure RHEL 10 so that the library files are protected from unauthorized access. Run the following command, replacing "[FILE]" with any library file with a mode more permissive than "755". $ sudo chmod 755 [FILE]

  109. RHEL-10-400220 CAT II V-281061 · SRG-OS-000206-GPOS-00084

    RHEL 10 must enforce mode "0755" or less permissive for the "/var/log" directory.

    Maps to SI-11 via CCI-001314
    Check

    Verify RHEL 10 is configured so that the "/var/log" directory has a mode of "0755" or less permissive with the following command: $ stat -c '%a %n' /var/log 755 /var/log If "/var/log" does not have a mode of "0755" or less permissive, this is a finding.

    Fix

    Configure RHEL 10 so that the "/var/log" directory has a mode of "0755" by running the following command: $ sudo chmod 0755 /var/log

  110. RHEL-10-400225 CAT II V-281062 · SRG-OS-000206-GPOS-00084

    RHEL 10 must enforce mode "0640" or less permissive for the "/var/log/messages" file.

    Maps to SI-11 via CCI-001314
    Check

    Verify RHEL 10 is configured so that the "/var/log/messages" file has a mode of "0640" or less permissive with the following command: $ stat -c '%a %n' /var/log/messages 600 /var/log/messages If "/var/log/messages" does not have a mode of "0640" or less permissive, this is a finding.

    Fix

    Configure RHEL 10 so that the "/var/log/messages" file has a mode of "0640" by running the following command: $ sudo chmod 0640 /var/log/messages

  111. RHEL-10-400230 CAT II V-281063 · SRG-OS-000095-GPOS-00049

    RHEL 10 must be configured to prohibit modification of permissions for cron configuration files and directories from the operating system defaults.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 is configured so that the owner, group, and mode of cron configuration files and directories match the operating system defaults with the following command: $ rpm --verify cronie crontabs | awk '! ($2 == "c" && $1 ~ /^.\..\.\.\.\..\./) {print $0}' If the command returns any output, this is a finding.

    Fix

    Configure RHEL 10 to prohibit modification of permissions for cron configuration files and directories from the operating system defaults with the following commands: $ sudo dnf reinstall cronie crontabs $ rpm --setugids cronie crontabs $ rpm --setperms cronie crontabs

  112. RHEL-10-400235 CAT II V-281064 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enforce mode "0740" or less permissive for local initialization files.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that all local initialization files have a mode of "0740" or less permissive with the following command: Note: The example will be for the "disauser" user, who has a home directory of "/home/disauser". $ sudo find /home -maxdepth 2 -type f -name ".*" -exec stat -c "%n %a" {} \; | awk '$2 > 740' /home/disauser/.bash_profile 770 If any local initialization files are returned, this indicates a mode more permissive than "0740", and this is a finding.

    Fix

    Configure RHEL 10 so that all local initialization files have a mode of "0740" or less permissive with the following command: Note: The example will be for the "disauser" user, who has a home directory of "/home/disauser". $ sudo chmod 0740 /home/disauser/.

  113. RHEL-10-400240 CAT II V-281065 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enforce mode "0750" or less permissive for local interactive user home directories.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the assigned home directory of all local interactive users has a mode of "0750" or less permissive with the following command: Note: This may miss interactive users that have been assigned a privileged user identifier (UID). Evidence of interactive use may be obtained from a number of log files containing system login information. $ stat -L -c '%a %n' $(awk -F: '($3>=1000)&&($7 !~ /nologin/){print $6}' /etc/passwd) 2>/dev/null 700 /home/disauser If home directories referenced in "/etc/passwd" do not have a mode of "0750" or less permissive, this is a finding.

    Fix

    Configure RHEL 10 so that the mode of interactive user's home directories is set to "0750". To change the mode of a local interactive user's home directory, use the following command: Note: The example will be for the user "disauser". $ sudo chmod 0750 /home/disauser

  114. RHEL-10-400245 CAT II V-281066 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enforce mode "0644" or less permissive for the "/etc/group" file to prevent unauthorized access.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/group" file has mode "0644" or less permissive with the following command: $ sudo stat -c "%a %n" /etc/group 644 /etc/group If a value of "0644" or less permissive is not returned, this is a finding.

    Fix

    Configure RHEL 10 so that the mode of the file "/etc/group" is set to "0644" by running the following command: $ sudo chmod 0644 /etc/group

  115. RHEL-10-400250 CAT II V-281067 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enforce mode "0644" or less permissive for the "/etc/group-" file to prevent unauthorized access.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/group-" file has mode "0644" or less permissive with the following command: $ sudo stat -c "%a %n" /etc/group- 644 /etc/group- If a value of "0644" or less permissive is not returned, this is a finding.

    Fix

    Configure RHEL 10 so that the mode of the "/etc/group-" file is set to "0644" by running the following command: $ sudo chmod 0644 /etc/group-

  116. RHEL-10-400255 CAT II V-281068 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enforce mode "0000" or less permissive for the "/etc/gshadow" file to prevent unauthorized access.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/gshadow" file has mode "0000" with the following command: $ sudo stat -c "%a %n" /etc/gshadow 0 /etc/gshadow If a value of "0" is not returned, this is a finding.

    Fix

    Configure RHEL 10 so that the mode of the "/etc/gshadow" file is set to "0000" by running the following command: $ sudo chmod 0000 /etc/gshadow

  117. RHEL-10-400260 CAT II V-281069 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enforce mode "0000" or less permissive for the "/etc/gshadow-" file to prevent unauthorized access.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/gshadow-" file has mode "0000" with the following command: $ sudo stat -c "%a %n" /etc/gshadow- 0 /etc/gshadow- If a value of "0" is not returned, this is a finding.

    Fix

    Configure RHEL 10 so that the mode of the "/etc/gshadow-" file is set to "0000" by running the following command: $ sudo chmod 0000 /etc/gshadow-

  118. RHEL-10-400265 CAT II V-281070 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enforce mode "0644" or less permissive for the "/etc/passwd" file to prevent unauthorized access.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/passwd" file has mode "0644" or less permissive with the following command: $ sudo stat -c "%a %n" /etc/passwd 644 /etc/passwd If a value of "0644" or less permissive is not returned, this is a finding.

    Fix

    Configure RHEL 10 so that the mode of the file "/etc/passwd" is set to "0644" by running the following command: $ sudo chmod 0644 /etc/passwd

  119. RHEL-10-400270 CAT II V-281071 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enforce mode "0644" or less permissive for "/etc/passwd-" file to prevent unauthorized access.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/passwd-" file has mode "0644" or less permissive with the following command: $ sudo stat -c "%a %n" /etc/passwd- 644 /etc/passwd- If a value of "0644" or less permissive is not returned, this is a finding.

    Fix

    Configure RHEL 10 so that the mode of the "/etc/passwd-" file is set to "0644" by running the following command: $ sudo chmod 0644 /etc/passwd-

  120. RHEL-10-400275 CAT II V-281072 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enforce mode "0000" or less permissive for "/etc/shadow-" file to prevent unauthorized access.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/shadow-" file has mode "0000" with the following command: $ sudo stat -c "%a %n" /etc/shadow- 0 /etc/shadow- If a value of "0" is not returned, this is a finding.

    Fix

    Configure RHEL 10 so that the mode of the "/etc/shadow-" file is set to "0000" by running the following command: $ sudo chmod 0000 /etc/shadow-

  121. RHEL-10-400280 CAT II V-281073 · SRG-OS-000138-GPOS-00069

    RHEL 10 must be configured so that a sticky bit is set on all public directories.

    Maps to SC-4 via CCI-001090
    Check

    Verify RHEL 10 is configured so that all world-writable directories have the sticky bit set with the following command: $ sudo find / -type d \( -perm -0002 -a ! -perm -1000 \) -print 2>/dev/null drwxrwxrwt 7 root root 4096 Jul 26 11:19 /tmp If any of the returned directories are world-writable and do not have the sticky bit set, this is a finding.

    Fix

    Configure RHEL 10 so that all world-writable directories have the sticky bit set to prevent unauthorized and unintended information transferred via shared system resources. Set the sticky bit on all world-writable directories using the following command (replace "[World-Writable Directory]" with any directory path missing the sticky bit): $ chmod a+t [World-Writable Directory]

  122. RHEL-10-400285 CAT II V-281074 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that all local files and directories have a valid group owner.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that all local files and directories have a valid group with the following command: $ df --local -P | awk {'if (NR!=1) print $6'} | sudo xargs -I '{}' find '{}' -xdev -nogroup If any files on the system do not have an assigned group, this is a finding.

    Fix

    Configure RHEL 10 so that all local files and directories have a valid group owner. Either remove all files and directories from RHEL 10 that do not have a valid group, or assign a valid group to all files and directories on the system with the "chgrp" command: $ sudo chgrp

  123. RHEL-10-400290 CAT II V-281075 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that all local files and directories must have a valid owner.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that all local files and directories have a valid owner with the following command: $ df --local -P | awk {'if (NR!=1) print $6'} | sudo xargs -I '{}' find '{}' -xdev -nouser If any files on the system do not have an assigned owner, this is a finding.

    Fix

    Configure RHEL 10 so that all local files and directories must have a valid owner. Either remove all files and directories that do not have a valid user from the system, or assign a valid user to all unowned files and directories on RHEL 10 with the "chown" command: $ sudo chown

  124. RHEL-10-400295 CAT II V-281076 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enforce mode "0000" for "/etc/shadow" to prevent unauthorized access.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that the "/etc/shadow" file has mode "0000" with the following command: $ sudo stat -c "%a %n" /etc/shadow 0 /etc/shadow If a value of "0" is not returned, this is a finding.

    Fix

    Configure RHEL 10 to enforce mode "0000" for "/etc/shadow" to prevent unauthorized access. Change the mode of the file "/etc/shadow" to "0000" by running the following command: $ sudo chmod 0000 /etc/shadow

  125. RHEL-10-400300 CAT II V-281077 · SRG-OS-000256-GPOS-00097

    RHEL 10 must be configured so that audit tools are owned by "root".

    Maps to AU-9 via CCI-001493, CCI-001494, CCI-001495
    Check

    Verify RHEL 10 audit tools are owned by "root" with the following command: $ sudo stat -c "%U %n" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/auditd /sbin/rsyslogd /sbin/augenrules root /sbin/auditctl root /sbin/aureport root /sbin/ausearch root /sbin/auditd root /sbin/rsyslogd root /sbin/augenrules If any audit tools do not have an owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the audit tools are owned by "root" by running the following command: $ sudo chown root [audit_tool] Replace "[audit_tool]" with each audit tool not owned by "root".

  126. RHEL-10-400305 CAT II V-281078 · SRG-OS-000256-GPOS-00097

    RHEL 10 must be configured so that audit tools are group-owned by "root".

    Maps to AU-9 via CCI-001493, CCI-001494, CCI-001495
    Check

    Verify RHEL 10 audit tools are group-owned by "root" with the following command: $ sudo stat -c "%G %n" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/auditd /sbin/rsyslogd /sbin/augenrules root /sbin/auditctl root /sbin/aureport root /sbin/ausearch root /sbin/auditd root /sbin/rsyslogd root /sbin/augenrules If any audit tools do not have a group owner of "root", this is a finding.

    Fix

    Configure RHEL 10 so that the audit tools are group-owned by "root" by running the following command: $ sudo chgrp root [audit_tool] Replace "[audit_tool]" with each audit tool not group-owned by "root".

  127. RHEL-10-400310 CAT II V-281079 · SRG-OS-000080-GPOS-00048

    RHEL 10 must set the umask value to "077" for all local interactive user accounts.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 sets the default umask for all local interactive users to "077". Identify the locations of all local interactive user home directories by looking at the "/etc/passwd" file. Check all local interactive user initialization files for interactive users with the following command: Note: The example is for a system that is configured to create users' home directories in the "/home" directory. $ sudo find /home -maxdepth 2 -type f -name ".[^.]*" -exec grep -iH -d skip --exclude=.bash_history umask {} \; /home/disauser/.bash_history:grep -i umask /etc/bashrc /etc/csh.cshrc /etc/profile /home/disauser/.bash_history:grep -i umask /etc/login.defs If any local interactive user initialization files are found to have a umask statement that sets a value less restrictive than "077", this is a finding.

    Fix

    Configure RHEL 10 to set the umask value for all local interactive user accounts to "077". Remove the umask statement from all local interactive users' initialization files. If the account is for an application, the requirement for a umask less restrictive than "077" can be documented with the information system security officer. However, the user agreement for access to the account must specify that the local interactive user must log in to their account first and then switch the user to the application account with the correct option to gain the account's environment variables.

  128. RHEL-10-400315 CAT II V-281080 · SRG-OS-000080-GPOS-00048

    RHEL 10 must define default permissions for the bash shell.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 "umask" setting is configured correctly in the "/etc/bashrc" file with the following command: Note: If the value of the "umask" parameter is set to "000" in the "/etc/bashrc" file, the Severity is raised to a CAT I. $ sudo grep umask /etc/bashrc [ `umask` -eq 0 ] && umask 077 If the value for the "umask" parameter is not "077", or the "umask" parameter is missing or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to define default permissions for all authenticated users using the bash shell. Add or edit the lines for the "umask" parameter in the "/etc/bashrc" file to "077": umask 077

  129. RHEL-10-400320 CAT II V-281081 · SRG-OS-000080-GPOS-00048

    RHEL 10 must define default permissions for the c shell.

    Maps to AC-3 via CCI-000213
    Check

    Verify the RHEL 10 "umask" setting is configured correctly in the "/etc/csh.cshrc" file with the following command: Note: If the value of the "umask" parameter is set to "000" in the "/etc/csh.cshrc" file, the Severity is raised to a CAT I. $ sudo grep umask /etc/csh.cshrc umask 077 If the value for the "umask" parameter is not "077", or the "umask" parameter is missing or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to define default permissions for all authenticated users using the c shell. Add or edit the lines for the "umask" parameter in the "/etc/csh.cshrc" file to "077": umask 077

  130. RHEL-10-400325 CAT II V-281082 · SRG-OS-000080-GPOS-00048

    RHEL 10 must define default permissions for all authenticated users in such a way that the user can read and modify only their own files.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 defines default permissions for all authenticated users in such a way that the user can only read and modify their own files with the following command: Note: If the value of the "umask" parameter is set to "000" in "/etc/login.defs" file, the Severity is raised to a CAT I. $ sudo grep -i umask /etc/login.defs umask 077 If the value for the "umask" parameter is not "077", or the "umask" parameter is missing or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to define default permissions for all authenticated users in such a way that the user can read and modify only their own files. Add or edit the lines for the "umask" parameter in the "/etc/login.defs" file to "077": umask 077

  131. RHEL-10-400330 CAT II V-281083 · SRG-OS-000080-GPOS-00048

    RHEL 10 must define default permissions for the system default profile.

    Maps to AC-3 via CCI-000213
    Check

    Verify the RHEL 10 "umask" setting is configured correctly in the "/etc/profile" file with the following command: Note: If the value of the "umask" parameter is set to "000" in the "/etc/profile" file, the Severity is raised to a CAT I. $ sudo grep umask /etc/profile umask 077 If the value for the "umask" parameter is not "077", or the "umask" parameter is missing or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to define default permissions for all authenticated users in such a way that the user can read and modify only their own files. Add or edit the lines for the "umask" parameter in the "/etc/profile" file to "077": umask 077

  132. RHEL-10-400335 CAT II V-281084 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enforce that all local initialization files configured by systemd-tmpfiles have mode "0600" or less permissive.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 enforces that all local initialization files configured by systemd-tmpfiles have mode "0600" or less permissive. Check that all files from "/usr/share/rootfiles/" are overridden correctly in RHEL 10: $ sudo grep /usr/share/rootfiles/ /etc/tmpfiles.d/*.conf C /root/.bash_logout 600 root root - /usr/share/rootfiles/.bash_logout C /root/.bash_profile 600 root root - /usr/share/rootfiles/.bash_profile C /root/.bashrc 600 root root - /usr/share/rootfiles/.bashrc C /root/.cshrc 600 root root - /usr/share/rootfiles/.cshrc C /root/.tcshrc 600 root root - /usr/share/rootfiles/.tcshrc If any files are not configured to "600", or if no files are found by grep, this is a finding.

    Fix

    Configure RHEL 10 to enforce that all local initialization files configured by systemd-tmpfiles have mode "0600" or less permissive. Ensure the following lines are in a ".conf" file under "/etc/tmpfiles.d/": C /root/.bash_logout 600 root root - /usr/share/rootfiles/.bash_logout C /root/.bash_profile 600 root root - /usr/share/rootfiles/.bash_profile C /root/.bashrc 600 root root - /usr/share/rootfiles/.bashrc C /root/.cshrc 600 root root - /usr/share/rootfiles/.cshrc C /root/.tcshrc 600 root root - /usr/share/rootfiles/.tcshrc

  133. RHEL-10-400340 CAT II V-281085 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enforce mode "0600" or less permissive for Secure Shell (SSH) private host key files.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 enforces mode "0600" for SSH private host key files with the following command: $ sudo stat -c "%a %n" /etc/ssh/*_key 600 /etc/ssh/ssh_host_ecdsa_key 600 /etc/ssh/ssh_host_ed25519_key 600 /etc/ssh/ssh_host_rsa_key If any private host key file has a mode more permissive than "0600", this is a finding.

    Fix

    Configure RHEL 10 to enforce mode "0600" for SSH private host key files with the following command: $ sudo chmod 0600 /etc/ssh/ssh_host*key Restart the SSH daemon for the changes to take effect: $ sudo systemctl restart sshd.service

  134. RHEL-10-400345 CAT II V-281086 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enforce "root" group ownership of the "/boot/grub2/grub.cfg" file.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 enforces group ownership of the "/boot/grub2/grub.cfg" file with the following command: $ sudo stat -c "%G %n" /boot/grub2/grub.cfg root /boot/grub2/grub.cfg If the "/boot/grub2/grub.cfg" file does not have a group owner of "root", this is a finding.

    Fix

    Configure RHEL 10 to enforce group ownership of the "/boot/grub2/grub.cfg" file. Change the group owner of the file "/boot/grub2/grub.cfg" to "root" by running the following command: $ sudo chgrp root /boot/grub2/grub.cfg

  135. RHEL-10-400350 CAT II V-281087 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enforce "root" ownership of the "/boot/grub2/grub.cfg" file.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 enforces ownership of the "/boot/grub2/grub.cfg" file with the following command: $ sudo stat -c "%U %n" /boot/grub2/grub.cfg root /boot/grub2/grub.cfg If the "/boot/grub2/grub.cfg" file does not have an owner of "root", this is a finding.

    Fix

    Configure RHEL 10 to enforce ownership of the "/boot/grub2/grub.cfg" file. Change the owner of the "/boot/grub2/grub.cfg" file to "root" by running the following command: $ sudo chown root /boot/grub2/grub.cfg

  136. RHEL-10-400355 CAT II V-281088 · SRG-OS-000368-GPOS-00154

    RHEL 10 must prevent device files from being interpreted on file systems that contain user home directories.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/home" is mounted with the "nodev" option with the following command: Note: If a separate file system has not been created for the user home directories (user home directories are mounted under "/"), this is automatically a finding, as the "nodev" option cannot be used on the "/" system. $ mount | grep /home /dev/mapper/luks-ca2261ed-7b00-4b7b-84cd-8cd6d8fa4b28 on /home type xfs (rw,nodev,nosuid,noexec,seclabel) If the "/home" file system is mounted without the "nodev" option, this is a finding.

    Fix

    Configure RHEL 10 to prevent device files from being interpreted on file systems that contain user home directories. Modify "/etc/fstab" to use the "nodev" option on the "/home" directory.

  137. RHEL-10-400360 CAT II V-281089 · SRG-OS-000368-GPOS-00154

    RHEL 10 must prevent files with the "setuid" and "setgid" bit set from being executed on file systems that contain user home directories.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/home" is mounted with the "nosuid" option with the following command: Note: If a separate file system has not been created for the user home directories (user home directories are mounted under "/"), this is automatically a finding, as the "nosuid" option cannot be used on the "/" system. $ mount | grep /home /dev/mapper/luks-ca2261ed-7b00-4b7b-84cd-8cd6d8fa4b28 on /home type xfs (rw,nodev,nosuid,noexec,seclabel) If the "/home" file system is mounted without the "nosuid" option, this is a finding.

    Fix

    Configure RHEL 10 to prevent files with the "setuid" and "setgid" bit set from being executed on file systems that contain user home directories. Modify "/etc/fstab" to use the "nosuid" option on the "/home" directory.

  138. RHEL-10-400365 CAT II V-281090 · SRG-OS-000080-GPOS-00048

    RHEL 10 must prevent code from being executed on file systems that contain user home directories.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that "/home" is mounted with the "noexec" option with the following command: Note: If a separate file system has not been created for the user home directories (user home directories are mounted under "/"), this is automatically a finding, as the "noexec" option cannot be used on the "/" system. $ mount | grep /home /dev/mapper/luks-ca2261ed-7b00-4b7b-84cd-8cd6d8fa4b28 on /home type xfs (rw,nodev,nosuid,noexec,seclabel) If the "/home" file system is mounted without the "noexec" option, this is a finding.

    Fix

    Configure RHEL 10 to prevent code from being executed on file systems that contain user home directories. Modify "/etc/fstab" to use the "noexec" option on the "/home" directory.

  139. RHEL-10-400400 CAT II V-281091 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/var/log/audit" with the "nodev" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/var/log/audit" is mounted with the "nodev" option: $ mount | grep /var/log/audit /dev/mapper/luks-4e45e1ad-5337-42c4-a19f-ee12ccc1d502 on /var/log/audit type xfs (rw,nodev,nosuid,noexec,seclabel) If the "/var/log/audit" file system is mounted without the "nodev" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/var/log/audit" with the "nodev" option. Modify "/etc/fstab" to use the "nodev" option on the "/var/log/audit" directory.

  140. RHEL-10-400405 CAT II V-281092 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/var/log/audit" with the "noexec" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/var/log/audit" is mounted with the "noexec" option: $ mount | grep /var/log/audit /dev/mapper/luks-4e45e1ad-5337-42c4-a19f-ee12ccc1d502 on /var/log/audit type xfs (rw,nodev,nosuid,noexec,seclabel) If the "/var/log/audit" file system is mounted without the "noexec" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/var/log/audit" with the "noexec" option. Modify "/etc/fstab" to use the "noexec" option on the "/var/log/audit" directory.

  141. RHEL-10-400410 CAT II V-281093 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/var/log/audit" with the "nosuid" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/var/log/audit" is mounted with the "nosuid" option: $ mount | grep /var/log/audit /dev/mapper/luks-4e45e1ad-5337-42c4-a19f-ee12ccc1d502 on /var/log/audit type xfs (rw,nodev,nosuid,noexec,seclabel) If the "/var/log/audit" file system is mounted without the "nosuid" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/var/log/audit" with the "nosuid" option. Modify "/etc/fstab" to use the "nosuid" option on the "/var/log/audit" directory.

  142. RHEL-10-400450 CAT II V-281094 · SRG-OS-000256-GPOS-00097

    RHEL 10 must enforce a mode of "0755" or less permissive for audit tools.

    Maps to AU-9 via CCI-001493, CCI-001494, CCI-001495
    Check

    Verify RHEL 10 is configured so that the audit tools have a mode of "0755" or less with the following command: $ stat -c "%a %n" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/auditd /sbin/rsyslogd /sbin/augenrules 755 /sbin/auditctl 755 /sbin/aureport 755 /sbin/ausearch 755 /sbin/auditd 755 /sbin/rsyslogd 755 /sbin/augenrules If any of the audit tool files have a mode more permissive than "0755", this is a finding.

    Fix

    Configure RHEL 10 so that the audit tools to have a mode of "0755" by running the following command: $ sudo chmod 0755 [audit_tool] Replace "[audit_tool]" with each audit tool that has a mode more permissive than "0755".

  143. RHEL-10-400500 CAT II V-281095 · SRG-OS-000095-GPOS-00049

    RHEL 10 must prohibit local initialization files from executing world-writable programs.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 local initialization files do not execute world-writable programs with the following command: Note: The example will be for a system that is configured to create user home directories in the "/home" directory. $ sudo find /home -perm -002 -type f -name ".[^.]*" -exec ls -ld {} \; If any local initialization files are found to reference world-writable files, this is a finding.

    Fix

    Configure RHEL 10 so that local initialization files do not execute world-writable programs with the following command: $ sudo chmod 0755

  144. RHEL-10-500000 CAT II V-281096 · SRG-OS-000269-GPOS-00103

    RHEL 10 must enable the systemd-journald service.

    Maps to SC-24 via CCI-001665
    Check

    Verify RHEL 10 enables the systemd-journald service with the following command: $ systemctl is-active systemd-journald active If the systemd-journald service is not active, this is a finding.

    Fix

    Configure RHEL 10 to enable the systemd-journald service. To enable the systemd-journald service, run the following command: $ sudo systemctl enable --now systemd-journald

  145. RHEL-10-500005 CAT II V-281097 · SRG-OS-000080-GPOS-00048

    RHEL 10 must enable auditing of processes that start prior to the audit daemon.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that GRUB 2 enables auditing of processes that start prior to the audit daemon with the following commands: Check that the current GRUB 2 configuration enables auditing: $ sudo grubby --info=ALL | grep args | grep -v 'audit=1' If any output is returned, this is a finding. Check that auditing is enabled by default to persist in kernel updates: $ sudo grep audit /etc/default/grub GRUB_CMDLINE_LINUX="audit=1" If "audit" is not set to "1", is missing, or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to enable auditing of processes that start prior to the audit daemon with the following command: $ sudo grubby --update-kernel=ALL --args="audit=1" Add or modify the following line in "/etc/default/grub" to ensure the configuration survives kernel updates: GRUB_CMDLINE_LINUX="audit=1"

  146. RHEL-10-500010 CAT II V-281098 · SRG-OS-000062-GPOS-00031

    RHEL 10 must audit local events.

    Maps to AU-12 via CCI-000169
    Check

    Verify that RHEL 10 generates audit records for local events with the following command: $ sudo grep local_events /etc/audit/auditd.conf local_events = yes If "local_events" is not set to "yes", the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records for local events by adding or updating the following line in "/etc/audit/auditd.conf": local_events = yes Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  147. RHEL-10-500015 CAT II V-281099 · SRG-OS-000058-GPOS-00028

    RHEL 10 must write audit records to disk.

    Maps to AU-9 via CCI-000163
    Check

    Verify the RHEL 10 audit system is configured to write logs to the disk with the following command: $ sudo grep write_logs /etc/audit/auditd.conf write_logs = yes If "write_logs" does not have a value of "yes", the line is commented out, or the line is missing, this is a finding.

    Fix

    Configure the RHEL 10 audit system to write log files to the disk. Edit the "/etc/audit/auditd.conf" file and add or update the "write_logs" option to "yes": write_logs = yes Restart the audit daemon with the following command for changes to take effect: $ sudo service auditd restart

  148. RHEL-10-500020 CAT II V-281100 · SRG-OS-000021-GPOS-00005

    RHEL 10 must log username information when unsuccessful login attempts occur.

    Maps to AC-7 via CCI-000044
    Check

    Verify RHEL 10 "/etc/security/faillock.conf" is configured to log username information when unsuccessful login attempts occur with the following command: $ sudo grep audit /etc/security/faillock.conf audit If the "audit" option is not set, is missing, or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to log username information when unsuccessful login attempts occur. Enable the feature using the following command: $ sudo authselect enable-feature with-faillock Add/modify the "/etc/security/faillock.conf" file to match the following line: audit

  149. RHEL-10-500025 CAT II V-281101 · SRG-OS-000063-GPOS-00032

    RHEL 10 must allow only the information system security manager (ISSM) (or individuals or roles appointed by the ISSM) to select which auditable events are to be audited.

    Maps to AU-12 via CCI-000171
    Check

    Verify RHEL 10 sets the files in directory "/etc/audit/rules.d/" and "/etc/audit/auditd.conf" file to have a mode of "0640" or less permissive with the following command: $ sudo find /etc/audit/rules.d/ /etc/audit/audit.rules /etc/audit/auditd.conf -type f -exec stat -c "%a %n" {} \; 600 /etc/audit/rules.d/audit.rules 640 /etc/audit/audit.rules 640 /etc/audit/auditd.conf If the audit configuration files have a mode more permissive than those shown, this is a finding.

    Fix

    Configure RHEL 10 so that the files in directory "/etc/audit/rules.d/" and the "/etc/audit/auditd.conf" file have a mode of "0640" with the following commands: $ sudo chmod 0600 /etc/audit/rules.d/audit.rules $ sudo chmod 0640 /etc/audit/rules.d/[customrulesfile].rules $ sudo chmod 0640 /etc/audit/auditd.conf

  150. RHEL-10-500030 CAT II V-281102 · SRG-OS-000037-GPOS-00015

    RHEL 10 must allocate an "audit_backlog_limit" of sufficient size to capture processes that start prior to the audit daemon.

    Maps to AU-3, AU-3(1), AU-4, AU-12, AU-14(1), MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-001464, CCI-001849, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 allocates a sufficient "audit_backlog_limit" to capture processes that start prior to the audit daemon with the following command: $ grep -oP 'audit_backlog_limit=\K[0-9]+' /proc/cmdline 8192 If the command returns any outputs, and "audit_backlog_limit" is less than "8192", this is a finding.

    Fix

    Configure RHEL 10 to allocate sufficient "audit_backlog_limit" to capture processes that start prior to the audit daemon with the following command: $ sudo grubby --update-kernel=ALL --args=audit_backlog_limit=8192 The setting will be applied on reboot.

  151. RHEL-10-500035 CAT II V-281103 · SRG-OS-000046-GPOS-00022

    RHEL 10 must take appropriate action when a critical audit processing failure occurs.

    Maps to AU-5 via CCI-000139
    Check

    Verify the RHEL 10 audit service is configured to panic on a critical error with the following command: $ sudo grep "\-f" /etc/audit/audit.rules -f 2 If the value for "-f" is not "2", and availability is not documented as an overriding concern, this is a finding.

    Fix

    Configure RHEL 10 to shut down when auditing failures occur. Add the following line to the bottom of the "/etc/audit/rules.d/audit.rules" file: -f 2

  152. RHEL-10-500040 CAT II V-281104 · SRG-OS-000343-GPOS-00134

    RHEL 10 must take action when allocated audit record storage volume reaches 75 percent of the audit record storage capacity.

    Maps to AU-5(1) via CCI-001855
    Check

    Verify RHEL 10 takes action when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity with the following command: $ sudo grep -w space_left /etc/audit/auditd.conf space_left = 25% If the value of the "space_left" keyword is not set to 25 percent of the storage volume allocated to audit logs, or if the line is commented out, ask the system administrator to indicate how the system is taking action if the allocated storage is about to reach capacity. If the "space_left" value is not configured to the correct value, this is a finding.

    Fix

    Configure RHEL 10 to initiate an action when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity by adding/modifying the following line in the /etc/audit/auditd.conf file: space_left = 25% Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  153. RHEL-10-500045 CAT II V-281105 · SRG-OS-000039-GPOS-00017

    RHEL 10 must label all off-loaded audit logs before sending them to the central log server.

    Maps to AU-3, AU-4(1) via CCI-000132, CCI-001851
    Check

    Verify the RHEL 10 audit daemon is configured to label all off-loaded audit logs with the following command: $ sudo grep name_format /etc/audit/auditd.conf name_format = hostname If the "name_format" option is not "hostname", "fqd", or "numeric", or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 so that all off-loaded audit logs are labeled before sending them to the central log server. Edit the "/etc/audit/auditd.conf" file and add or update the "name_format" option: name_format = hostname Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  154. RHEL-10-500105 CAT II V-281107 · SRG-OS-000343-GPOS-00134

    RHEL 10 must take action when allocated audit record storage volume reaches 95 percent of the audit record storage capacity.

    Maps to AU-5(1) via CCI-001855
    Check

    Verify RHEL 10 takes action when allocated audit record storage volume reaches 95 percent of the repository maximum audit record storage capacity with the following command: $ sudo grep -w admin_space_left /etc/audit/auditd.conf admin_space_left = 5% If the value of the "admin_space_left" keyword is not set to 5 percent of the storage volume allocated to audit logs, or if the line is commented out, ask the system administrator to indicate how the system is taking action if the allocated storage is about to reach capacity. If the "admin_space_left" value is not configured to the correct value, this is a finding.

    Fix

    Configure RHEL 10 to initiate an action when allocated audit record storage volume reaches 95 percent of the repository maximum audit record storage capacity by adding/modifying the following line in the /etc/audit/auditd.conf file: admin_space_left = 5% Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  155. RHEL-10-500110 CAT II V-281108 · SRG-OS-000343-GPOS-00134

    RHEL 10 must take action when allocated audit record storage volume reaches 95 percent of the repository maximum audit record storage capacity.

    Maps to AU-5(1) via CCI-001855
    Check

    Verify RHEL 10 is configured to take action if allocated audit record storage volume reaches 95 percent of the repository maximum audit record storage capacity with the following command: $ sudo grep admin_space_left_action /etc/audit/auditd.conf admin_space_left_action = single If the value of the "admin_space_left_action" is not set to "single", or if the line is commented out, ask the system administrator (SA) to indicate how the system is providing real-time alerts to the SA and information system security officer (ISSO). If there is no evidence that real-time alerts are configured on the system, this is a finding.

    Fix

    Configure RHEL 10 auditd service to take action if allocated audit record storage volume reaching 95 percent of the repository maximum audit record storage capacity. Edit the following line in "/etc/audit/auditd.conf" to ensure the system is forced into single user mode if the audit record storage volume is about to reach maximum capacity: admin_space_left_action = single Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  156. RHEL-10-500115 CAT II V-281109 · SRG-OS-000342-GPOS-00133

    RHEL 10 must take appropriate action when the internal event queue is full.

    Maps to AU-4(1) via CCI-001851
    Check

    Verify the RHEL 10 audit system is configured to take an appropriate action when the internal event queue is full: $ sudo grep overflow_action /etc/audit/auditd.conf overflow_action = syslog If the value of the "overflow_action" option is not set to "syslog", "single", or "halt", or the line is commented out, ask the system administrator to indicate how the audit logs are off-loaded to a different system or media. If there is no evidence that the audit system is configured to off-load the audit logs to another system or media, and if the overflow action is not set to take appropriate action if the internal event queue becomes full, this is a finding.

    Fix

    Configure RHEL 10 to take appropriate action when the internal event queue is full. Edit the "/etc/audit/auditd.conf" file and add or update the "overflow_action" option: overflow_action = syslog Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  157. RHEL-10-500120 CAT II V-281110 · SRG-OS-000255-GPOS-00096

    RHEL 10 must produce audit records containing information to establish the identity of any individual or process associated with the event.

    Maps to AU-3 via CCI-001487
    Check

    Verify the RHEL 10 audit system is configured to resolve audit information before writing to disk with the following command: $ sudo grep log_format /etc/audit/auditd.conf log_format = ENRICHED If the "log_format" option is not "ENRICHED", or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 audit system to resolve audit information before writing to disk. Edit the "/etc/audit/auditd.conf" file and add or update the "log_format" option: log_format = ENRICHED Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  158. RHEL-10-500125 CAT II V-281111 · SRG-OS-000051-GPOS-00024

    RHEL 10 must periodically flush audit records to disk to ensure that audit records are not lost.

    Maps to AU-6(4) via CCI-000154
    Check

    Verify RHEL 10 is configured to flush audit records to disk after every 100 records with the following command: $ sudo grep freq /etc/audit/auditd.conf freq = 100 If "freq" is not set to a value of "100" or greater, the value is missing, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to flush audit records to disk by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": freq = 100 Restart the audit daemon with the following command for changes to take effect: $ sudo service auditd restart

  159. RHEL-10-500205 CAT II V-281113 · SRG-OS-000343-GPOS-00134

    RHEL 10 must notify the system administrator (SA) and information system security officer (ISSO) (at a minimum) when allocated audit record storage volume 75 percent utilization.

    Maps to AU-5(1) via CCI-001855
    Check

    Verify RHEL 10 notifies the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity with the following command: $ sudo grep -w space_left_action /etc/audit/auditd.conf space_left_action = email If the value of the "space_left_action" is not set to "email", or if the line is commented out, ask the SA to indicate how the system is providing real-time alerts to the SA and ISSO. If there is no evidence that real-time alerts are configured on the system, this is a finding.

    Fix

    Configure RHEL 10 to initiate an action to notify the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity by adding/modifying the following line in the "/etc/audit/auditd.conf" file. space_left_action = email Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  160. RHEL-10-500210 CAT II V-281114 · SRG-OS-000046-GPOS-00022

    RHEL 10 must notify the system administrator (SA) and/or information system security officer (ISSO) (at a minimum) of an audit processing failure.

    Maps to AU-5, AU-5(1) via CCI-000139, CCI-001855
    Check

    Verify RHEL 10 is configured to notify the SA and/or ISSO (at a minimum) of an audit processing failure with the following command: $ sudo grep action_mail_acct /etc/audit/auditd.conf action_mail_acct = root If the value of the "action_mail_acct" keyword is not set to "root" and/or other accounts for security personnel, the "action_mail_acct" keyword is missing, or the retuned line is commented out, ask the SA to indicate how they and the ISSO are notified of an audit process failure. If there is no evidence of the proper personnel being notified of an audit processing failure, this is a finding.

    Fix

    Configure RHEL 10 to notify the SA and/or ISSO (at a minimum) of an audit processing failure. Edit the following line in "/etc/audit/auditd.conf" to ensure administrators are notified via email for those situations: action_mail_acct = root Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  161. RHEL-10-500215 CAT II V-281115 · SRG-OS-000032-GPOS-00013

    RHEL 10 must log Secure Shell (SSH) connection attempts and failures to the server.

    Maps to AC-17(1) via CCI-000067
    Check

    Verify RHEL 10 logs SSH connection attempts and failures to the server with the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*loglevel' /etc/ssh/sshd_config.d/90-sshd.conf:LogLevel VERBOSE If a value of "VERBOSE" is not returned, or the line is commented out or missing, this is a finding.

    Fix

    Configure RHEL 10 to log connection attempts by adding or modifying the following line in "/etc/ssh/sshd_config" or in a file in "/etc/ssh/sshd_config.d": LogLevel VERBOSE Restart the SSH daemon with the following command for the settings to take effect: $ sudo systemctl restart sshd.service

  162. RHEL-10-500300 CAT II V-281116 · SRG-OS-000326-GPOS-00126

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "execve" system call.

    Maps to AC-6(8), AC-6(9), MA-3(5) via CCI-002233, CCI-002234, CCI-004188
    Check

    Verify RHEL 10 is configured to audit the execution of the "execve" system call with the following command: $ sudo auditctl -l | grep execve -a always,exit -F arch=b32 -S execve -C uid!=euid -F euid=0 -F key=execpriv -a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -F key=execpriv -a always,exit -F arch=b32 -S execve -C gid!=egid -F egid=0 -F key=execpriv -a always,exit -F arch=b64 -S execve -C gid!=egid -F egid=0 -F key=execpriv If the command does not return all lines, or the lines are commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "execve" system call. Add or update the following file system rules to "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -S execve -C uid!=euid -F euid=0 -k execpriv -a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -k execpriv -a always,exit -F arch=b32 -S execve -C gid!=egid -F egid=0 -k execpriv -a always,exit -F arch=b64 -S execve -C gid!=egid -F egid=0 -k execpriv Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  163. RHEL-10-500310 CAT II V-281117 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "setxattr", "fsetxattr", "lsetxattr", "removexattr", "fremovexattr", and "lremovexattr" system calls.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "setxattr", "fsetxattr", "lsetxattr", "removexattr", "fremovexattr", and "lremovexattr" system calls with the following command: $ sudo auditctl -l | grep xattr -a always,exit -F arch=b32 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid>=1000 -F auid!=unset -k perm_mod -a always,exit -F arch=b64 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid>=1000 -F auid!=unset -k perm_mod -a always,exit -F arch=b32 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid=0 -k perm_mod -a always,exit -F arch=b64 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid=0 -k perm_mod If both the "b32" and "b64" audit rules are not defined for the "setxattr", "fsetxattr", "lsetxattr", "removexattr", "fremovexattr", and "lremovexattr" system calls, or if any of the lines returned are commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "setxattr", "fsetxattr", "lsetxattr", "removexattr", "fremovexattr", and "lremovexattr" system calls by adding or updating the following lines to "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid>=1000 -F auid!=unset -k perm_mod -a always,exit -F arch=b64 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid>=1000 -F auid!=unset -k perm_mod -a always,exit -F arch=b32 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid=0 -k perm_mod -a always,exit -F arch=b64 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid=0 -k perm_mod Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  164. RHEL-10-500320 CAT II V-281118 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of "umount" system calls.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "umount" command with the following command: $ sudo auditctl -l | grep /usr/bin/umount -a always,exit -S all -F path=/usr/bin/umount -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-mount If the command does not return an audit rule for "umount", or any of the lines returned are commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "umount" command by adding or updating the following rules in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/bin/umount -F perm=x -F auid>=1000 -F auid!=unset -k privileged-mount Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  165. RHEL-10-500330 CAT II V-281119 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "chacl" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "chacl" command with the following command: $ sudo auditctl -l | grep chacl -a always,exit -S all -F path=/usr/bin/chacl -F perm=x -F auid>=1000 -F auid!=-1 -F key=perm_mod If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "chacl" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/bin/chacl -F perm=x -F auid>=1000 -F auid!=unset -k perm_mod Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  166. RHEL-10-500340 CAT II V-281120 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "setfacl" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "setfacl" command with the following command: $ sudo auditctl -l | grep setfacl -a always,exit -S all -F path=/usr/bin/setfacl -F perm=x -F auid>=1000 -F auid!=-1 -F key=perm_mod If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "setfacl" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/bin/setfacl -F perm=x -F auid>=1000 -F auid!=unset -k perm_mod Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  167. RHEL-10-500350 CAT II V-281121 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "chcon" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "chcon" command with the following command: $ sudo auditctl -l | grep chcon -a always,exit -S all -F path=/usr/bin/chcon -F perm=x -F auid>=1000 -F auid!=-1 -F key=perm_mod If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "chcon" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/bin/chcon -F perm=x -F auid>=1000 -F auid!=unset -k perm_mod Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  168. RHEL-10-500360 CAT II V-281122 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "semanage" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "semanage" command with the following command: $ sudo auditctl -l | grep semanage -a always,exit -S all -F path=/usr/sbin/semanage -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-unix-update If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "semanage" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/sbin/semanage -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  169. RHEL-10-500370 CAT II V-281123 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "setfiles" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "setfiles" command with the following command: $ sudo auditctl -l | grep setfiles -a always,exit -S all -F path=/usr/sbin/setfiles -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-unix-update If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "setfiles" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/sbin/setfiles -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  170. RHEL-10-500380 CAT II V-281124 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "setsebool" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "setsebool" command with the following command: $ sudo auditctl -l | grep setsebool -a always,exit -S all -F path=/usr/sbin/setsebool -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful use of the "setsebool " command by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: -a always,exit -F path=/usr/sbin/setsebool -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  171. RHEL-10-500390 CAT II V-281125 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "truncate", "ftruncate", "creat", "open", "openat", and "open_by_handle_at" system calls.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit successful/unsuccessful attempts to use the "truncate", "ftruncate", "creat", "open", "openat", and "open_by_handle_at" system calls with the following command: $ sudo auditctl -l | grep 'open\|truncate\|creat' -a always,exit -F arch=b32 -S truncate,ftruncate,creat,open,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access -a always,exit -F arch=b64 -S truncate,ftruncate,creat,open,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access -a always,exit -F arch=b32 -S truncate,ftruncate,creat,open,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access -a always,exit -F arch=b64 -S truncate,ftruncate,creat,open,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access If the output does not produce rules containing "-F exit=-EPERM", this is a finding. If the output does not produce rules containing "-F exit=-EACCES", this is a finding. If the command does not return an audit rule for "truncate", "ftruncate", "creat", "open", "openat", and "open_by_handle_at", or any of the lines returned are commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful use of the "truncate", "ftruncate", "creat", "open", "openat", and "open_by_handle_at" system calls by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: -a always,exit -F arch=b32 -S truncate,ftruncate,creat,open,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access -a always,exit -F arch=b64 -S truncate,ftruncate,creat,open,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access -a always,exit -F arch=b32 -S truncate,ftruncate,creat,open,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access -a always,exit -F arch=b64 -S truncate,ftruncate,creat,open,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  172. RHEL-10-500400 CAT II V-281126 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "delete_module" system call.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "delete_module" system call with the following command: $ sudo auditctl -l | grep delete_module -a always,exit -F arch=b32 -S delete_module -F auid>=1000 -F auid!=-1 -F key=module_chng -a always,exit -F arch=b64 -S delete_module -F auid>=1000 -F auid!=-1 -F key=module_chng If both the "b32" and "b64" audit rules are not defined for the "delete_module" system call, or any of the lines returned are commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful use of the "delete_module" system call by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: -a always,exit -F arch=b32 -S delete_module -F auid>=1000 -F auid!=unset -k module_chng -a always,exit -F arch=b64 -S delete_module -F auid>=1000 -F auid!=unset -k module_chng Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  173. RHEL-10-500410 CAT II V-281127 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "init_module" and "finit_module" system calls.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "init_module" and "finit_module" syscalls with the following command: $ sudo auditctl -l | grep init_module -a always,exit -F arch=b32 -S init_module,finit_module -F auid>=1000 -F auid!=unset -k module_chng -a always,exit -F arch=b64 -S init_module,finit_module -F auid>=1000 -F auid!=unset -k module_chng If both the "b32" and "b64" audit rules are not defined for the "init_module" and "finit_module" system calls, or any of the lines returned are commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful use of the "init_module" and "finit_module" system calls by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: -a always,exit -F arch=b32 -S init_module,finit_module -F auid>=1000 -F auid!=unset -k module_chng -a always,exit -F arch=b64 -S init_module,finit_module -F auid>=1000 -F auid!=unset -k module_chng Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  174. RHEL-10-500420 CAT II V-281128 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "chage" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "chage" command with the following command: $ sudo auditctl -l | grep chage -a always,exit -S all -F path=/usr/bin/chage -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-chage If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "chage" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/bin/chage -F perm=x -F auid>=1000 -F auid!=unset -k privileged-chage Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  175. RHEL-10-500430 CAT II V-281129 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "chsh" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "chsh" command with the following command: $ sudo auditctl -l | grep chsh -a always,exit -S all -F path=/usr/bin/chsh -F perm=x -F auid>=1000 -F auid!=-1 -F key=priv_cmd If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "chsh" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/bin/chsh -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  176. RHEL-10-500440 CAT II V-281130 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "crontab" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "crontab" command with the following command: $ sudo auditctl -l | grep crontab -a always,exit -S all -F path=/usr/bin/crontab -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-crontab If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "crontab" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/bin/crontab -F perm=x -F auid>=1000 -F auid!=unset -k privileged-crontab Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  177. RHEL-10-500450 CAT II V-281131 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "gpasswd" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 generates audit records for the execution of the "gpasswd" command with the following command: $ sudo auditctl -l | grep '/usr/bin/gpasswd' -a always,exit -F arch=b32 -F path=/usr/bin/gpasswd -F perm=x -F key=privileged-gpasswd -a always,exit -F arch=b64 -F path=/usr/bin/gpasswd -F perm=x -F key=privileged-gpasswd If the command does not return these lines, or the lines are commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "gpasswd" command by adding or updating the following rules in "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -F path=/usr/bin/gpasswd -F perm=x -k privileged-gpasswd -a always,exit -F arch=b64 -F path=/usr/bin/gpasswd -F perm=x -k privileged-gpasswd To load the rules to the kernel immediately, use the following command: $ sudo augenrules --load

  178. RHEL-10-500460 CAT II V-281132 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "kmod" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "kmod" command with the following command: $ sudo auditctl -l | grep kmod -a always,exit -S all -F path=/usr/bin/kmod -F perm=x -F auid>=1000 -F auid!=-1 -F key=modules If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "kmod" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/bin/kmod -F perm=x -F auid>=1000 -F auid!=unset -k modules Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  179. RHEL-10-500470 CAT II V-281133 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "newgrp" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "newgrp" command with the following command: $ sudo auditctl -l | grep newgrp -a always,exit -S all -F path=/usr/bin/newgrp -F perm=x -F auid>=1000 -F auid!=-1 -F key=priv_cmd If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "newgrp" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/bin/newgrp -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  180. RHEL-10-500480 CAT II V-281134 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "pam_timestamp_check" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "pam_timestamp_check" command with the following command: $ sudo auditctl -l | grep timestamp -a always,exit -S all -F path=/usr/sbin/pam_timestamp_check -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-pam_timestamp_check If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "pam_timestamp_check" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/sbin/pam_timestamp_check -F perm=x -F auid>=1000 -F auid!=unset -k privileged-pam_timestamp_check Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  181. RHEL-10-500490 CAT II V-281135 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "passwd" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 generates audit records for successful and unsuccessful uses of the "passwd" command with the following command: $ sudo auditctl -l | grep '/usr/bin/passwd' -a always,exit -F arch=b32 -F path=/usr/bin/passwd -F perm=x -F key=privileged-passwd -a always,exit -F arch=b64 -F path=/usr/bin/passwd -F perm=x -F key=privileged-passwd If the command does not return these lines, or the lines are commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "passwd" command by adding or updating the following rules in "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -F path=/usr/bin/passwd -F perm=x -k privileged-passwd -a always,exit -F arch=b64 -F path=/usr/bin/passwd -F perm=x -k privileged-passwd To load the rules to the kernel immediately, use the following command: $ sudo augenrules --load

  182. RHEL-10-500500 CAT II V-281136 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "postdrop" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "postdrop" command with the following command: $ sudo auditctl -l | grep postdrop -a always,exit -S all -F path=/usr/sbin/postdrop -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-unix-update If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "postdrop" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/sbin/postdrop -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  183. RHEL-10-500510 CAT II V-281137 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "postqueue" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "postqueue" command with the following command: $ sudo auditctl -l | grep postqueue -a always,exit -S all -F path=/usr/sbin/postqueue -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-unix-update If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "postqueue" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/sbin/postqueue -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  184. RHEL-10-500520 CAT II V-281138 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the ssh-agent command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "ssh-agent" command with the following command: $ sudo auditctl -l | grep ssh-agent -a always,exit -S all -F path=/usr/bin/ssh-agent -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-ssh If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "ssh-agent" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/bin/ssh-agent -F perm=x -F auid>=1000 -F auid!=unset -k privileged-ssh Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  185. RHEL-10-500530 CAT II V-281139 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "ssh-keysign" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "ssh-keysign" command with the following command: $ sudo auditctl -l | grep ssh-keysign -a always,exit -S all -F path=/usr/libexec/openssh/ssh-keysign -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-ssh If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "ssh-keysign" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/libexec/openssh/ssh-keysign -F perm=x -F auid>=1000 -F auid!=unset -k privileged-ssh Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  186. RHEL-10-500540 CAT II V-281140 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "su" command.

    Maps to AU-3, AU-3(1), AU-12, MA-3(5), MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-000172, CCI-002884, CCI-004188
    Check

    Verify RHEL 10 is configured to audit the execution of the "su" command with the following command: $ sudo auditctl -l | grep '/usr/bin/su\b' -a always,exit -S all -F path=/usr/bin/su -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-priv_change If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "su" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/bin/su -F perm=x -F auid>=1000 -F auid!=unset -k privileged-priv_change Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  187. RHEL-10-500550 CAT II V-281141 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "sudo" command.

    Maps to AU-3, AU-3(1), AU-12, MA-3(5), MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172, CCI-004188
    Check

    Verify RHEL 10 is configured to audit the execution of the "sudo" command with the following command: $ sudo auditctl -l | grep '/usr/bin/sudo\b' -a always,exit -S all -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -F auid!=-1 -F key=priv_cmd If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "sudo" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  188. RHEL-10-500560 CAT II V-281142 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "sudoedit" command.

    Maps to AU-3, AU-3(1), AU-12, MA-3(5), MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172, CCI-004188
    Check

    Verify RHEL 10 is configured to audit the execution of the "sudoedit" command with the following command: $ sudo auditctl -l | grep /usr/bin/sudoedit -a always,exit -S all -F path=/usr/bin/sudoedit -F perm=x -F auid>=1000 -F auid!=-1 -F key=priv_cmd If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "sudoedit" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/bin/sudoedit -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  189. RHEL-10-500570 CAT II V-281143 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "unix_chkpwd" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "unix_chkpwd" command with the following command: $ sudo auditctl -l | grep unix_chkpwd -a always,exit -S all -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-unix-update If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "unix_chkpwd" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  190. RHEL-10-500580 CAT II V-281144 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "unix_update" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-000172, CCI-002884
    Check

    Verify RHEL 10 is configured to audit the execution of the "unix_update" command with the following command: $ sudo auditctl -l | grep unix_update -a always,exit -S all -F path=/usr/sbin/unix_update -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-unix-update If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "unix_update" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/sbin/unix_update -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  191. RHEL-10-500590 CAT II V-281145 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "userhelper" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "userhelper" command with the following command: $ sudo auditctl -l | grep userhelper -a always,exit -S all -F path=/usr/sbin/userhelper -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-unix-update If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "userhelper" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/sbin/userhelper -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  192. RHEL-10-500600 CAT II V-281146 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "usermod" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "usermod" command with the following command: $ sudo auditctl -l | grep usermod -a always,exit -S all -F path=/usr/sbin/usermod -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-usermod If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "usermod" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/sbin/usermod -F perm=x -F auid>=1000 -F auid!=unset -k privileged-usermod Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  193. RHEL-10-500605 CAT II V-288828 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "useradd" command.

    Maps to AU-3 via CCI-000130
    Check

    Verify RHEL 10 is configured to audit the execution of the "useradd" command with the following command: $ sudo auditctl -l | grep useradd -a always,exit -S all -F path=/usr/sbin/useradd -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-useradd If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "useradd " command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/sbin/useradd -F perm=x -F auid>=1000 -F auid!=unset -k privileged-useradd Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  194. RHEL-10-500610 CAT II V-281147 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "mount" command.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "mount" command with the following command: $ sudo auditctl -l | grep mount -a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=unset -k privileged-mount -a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=unset -k privileged-mount If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "mount" command by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=unset -k privileged-mount -a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=unset -k privileged-mount Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  195. RHEL-10-500620 CAT II V-281148 · SRG-OS-000477-GPOS-00222

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "init" command.

    Maps to AU-12 via CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "init" command with the following command: $ sudo auditctl -l | grep /usr/sbin/init -a always,exit -S all -F path=/usr/sbin/init -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-init If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful uses of the "init" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: -a always,exit -F path=/usr/sbin/init -F perm=x -F auid>=1000 -F auid!=unset -k privileged-init Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  196. RHEL-10-500630 CAT II V-281149 · SRG-OS-000477-GPOS-00222

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "poweroff" command.

    Maps to AU-12 via CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "poweroff" command with the following command: $ sudo auditctl -l | grep poweroff -a always,exit -S all -F path=/usr/sbin/poweroff -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-poweroff If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful uses of the "poweroff" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: -a always,exit -F path=/usr/sbin/poweroff -F perm=x -F auid>=1000 -F auid!=unset -k privileged-poweroff Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  197. RHEL-10-500640 CAT II V-281150 · SRG-OS-000477-GPOS-00222

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "reboot" command.

    Maps to AU-12 via CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "reboot" command with the following command: $ sudo auditctl -l | grep reboot -a always,exit -S all -F path=/usr/sbin/reboot -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-reboot If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful uses of the "reboot" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: -a always,exit -F path=/usr/sbin/reboot -F perm=x -F auid>=1000 -F auid!=unset -k privileged-reboot Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  198. RHEL-10-500650 CAT II V-281151 · SRG-OS-000477-GPOS-00222

    RHEL 10 must generate audit records for successful and unsuccessful uses of the shutdown command.

    Maps to AU-12 via CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "shutdown" command with the following command: $ sudo cat /etc/audit/rules.d/* | grep shutdown -a always,exit -S all -F path=/usr/sbin/shutdown -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-shutdown If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful uses of the "shutdown" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: -a always,exit -F path=/usr/sbin/shutdown -F perm=x -F auid>=1000 -F auid!=unset -k privileged-shutdown Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  199. RHEL-10-500660 CAT II V-281152 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "umount" system call.

    Maps to AU-3, AU-12, MA-4(1) via CCI-000130, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 generates an audit record for all uses of the "umount" system call with the following command: $ sudo auditctl -l | grep b32 | grep 'umount\b' -a always,exit -F arch=b32 -S umount -F auid>=1000 -F auid!=-1 -F key=privileged-umount If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful uses of the "umount" system call by adding or updating the following rules in "/etc/audit/audit.rules" and adding the following rules to "/etc/audit/rules.d/perm_mod.rules" or updating the existing rules in files in the "/etc/audit/rules.d/" directory: -a always,exit -F arch=b32 -S umount -F auid>=1000 -F auid!=unset -k privileged-umount Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  200. RHEL-10-500670 CAT II V-281153 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for successful and unsuccessful uses of the "umount2" system call.

    Maps to AU-3, AU-12, MA-4(1) via CCI-000130, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 generates an audit record for all uses of the "umount2" system call with the following command: $ sudo auditctl -l | grep umount2 -a always,exit -F arch=b64 -S umount2 -F auid>=1000 -F auid!=-1 -F key=privileged-umount -a always,exit -F arch=b32 -S umount2 -F auid>=1000 -F auid!=-1 -F key=privileged-umount If no line is returned, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful uses of the "umount2" system call by adding or updating the following rules in a file in "/etc/audit/rules.d": -a always,exit -F arch=b32 -S umount2 -F auid>=1000 -F auid!=unset -k privileged-umount -a always,exit -F arch=b64 -S umount2 -F auid>=1000 -F auid!=unset -k privileged-umount Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  201. RHEL-10-500680 CAT II V-281154 · SRG-OS-000004-GPOS-00004

    RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/sudoers".

    Maps to AC-2(1), AC-2(4), AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000018, CCI-000130, CCI-000135, CCI-000169, CCI-000015, CCI-002884, CCI-000172, CCI-001403, CCI-001404, CCI-001405, CCI-002130
    Check

    Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect "/etc/sudoers" with the following command: $ sudo auditctl -l | grep '/etc/sudoers[^.]' -a always,exit -F arch=b32 -F path=/etc/sudoers -F perm=wa -F key=identity -a always,exit -F arch=b32 -F path=/etc/sudoers -F perm=wa -F key=identity If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/sudoers". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -F path=/etc/sudoers -F perm=wa -F key=identity -a always,exit -F arch=b64 -F path=/etc/sudoers -F perm=wa -F key=identity Restart the audit daemon with the following command for the changes to take effect: $ sudo augenrules --load

  202. RHEL-10-500690 CAT II V-281155 · SRG-OS-000004-GPOS-00004

    RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect the "/etc/sudoers.d/" directory.

    Maps to AC-2(1), AC-2(4), AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000018, CCI-000130, CCI-000135, CCI-000169, CCI-000015, CCI-002884, CCI-000172, CCI-001403, CCI-001404, CCI-001405, CCI-002130
    Check

    Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect "/etc/sudoers.d/" with the following command: $ sudo auditctl -l | grep /etc/sudoers.d -a always,exit -F arch=b32 -F path=/etc/sudoers.d -F perm=wa -F key=identity -a always,exit -F arch=b64 -F path=/etc/sudoers.d -F perm=wa -F key=identity If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/sudoers.d/". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -F path=/etc/sudoers.d -F perm=wa -F key=identity -a always,exit -F arch=b64 -F path=/etc/sudoers.d -F perm=wa -F key=identity Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  203. RHEL-10-500700 CAT II V-281156 · SRG-OS-000004-GPOS-00004

    RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/group".

    Maps to AC-2(1), AC-2(4), AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000018, CCI-000130, CCI-000135, CCI-000169, CCI-000015, CCI-002884, CCI-000172, CCI-001403, CCI-001404, CCI-001405, CCI-002130
    Check

    Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect "/etc/group" with the following command: $ sudo auditctl -l | egrep '(/etc/group)' -a always,exit -F arch=b32 -F path=/etc/group -F perm=wa -F key=identity -a always,exit -F arch=b64 -F path=/etc/group -F perm=wa -F key=identity If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/group". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -F path=/etc/group -F perm=wa -F key=identity -a always,exit -F arch=b64 -F path=/etc/group -F perm=wa -F key=identity Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  204. RHEL-10-500710 CAT II V-281157 · SRG-OS-000004-GPOS-00004

    RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/gshadow".

    Maps to AC-2(1), AC-2(4), AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000018, CCI-000130, CCI-000135, CCI-000169, CCI-000015, CCI-002884, CCI-000172, CCI-001403, CCI-001404, CCI-001405, CCI-002130
    Check

    Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect "/etc/gshadow" with the following command: $ sudo auditctl -l | egrep '(/etc/gshadow)' -a always,exit -F arch=b32 -F path=/etc/gshadow -F perm=wa -F key=identity -a always,exit -F arch=b64 -F path=/etc/gshadow -F perm=wa -F key=identity If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/gshadow". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -F path=/etc/gshadow -F perm=wa -F key=identity -a always,exit -F arch=b64 -F path=/etc/gshadow -F perm=wa -F key=identity Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  205. RHEL-10-500720 CAT II V-281158 · SRG-OS-000004-GPOS-00004

    RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/security/opasswd".

    Maps to AC-2(1), AC-2(4), AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000018, CCI-000130, CCI-000135, CCI-000169, CCI-000015, CCI-002884, CCI-000172, CCI-001403, CCI-001404, CCI-001405, CCI-002130
    Check

    Verify RHEL 10 generates audit records for modifications to "/etc/security/opasswd" with the following command: $ sudo auditctl -l | grep '/etc/security/opasswd' -a always,exit -F arch=b32 -F path=/etc/security/opasswd -F perm=wa -F key=identity -a always,exit -F arch=b64 -F path=/etc/security/opasswd -F perm=wa -F key=identity If the command does not return these lines, or the lines are commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records for all modifications to "/etc/security/opasswd" by adding or updating the following rules in "/etc/audit/rules.d/identity.rules": -a always,exit -F arch=b32 -F path=/etc/security/opasswd -F perm=wa -k identity -a always,exit -F arch=b64 -F path=/etc/security/opasswd -F perm=wa -k identity To load the rules to the kernel immediately, use the following command: $ sudo augenrules --load

  206. RHEL-10-500730 CAT II V-281159 · SRG-OS-000004-GPOS-00004

    RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/passwd".

    Maps to AC-2(1), AC-2(4), AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000018, CCI-000130, CCI-000135, CCI-000169, CCI-000015, CCI-002884, CCI-000172, CCI-001403, CCI-001404, CCI-001405, CCI-002130
    Check

    Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect "/etc/passwd" with the following command: $ sudo auditctl -l | egrep '(/etc/passwd)' -a always,exit -F arch=b32 -F path=/etc/passwd -F perm=wa -F key=identity -a always,exit -F arch=b64 -F path=/etc/passwd -F perm=wa -F key=identity If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/passwd". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -F path=/etc/passwd -F perm=wa -F key=identity -a always,exit -F arch=b64 -F path=/etc/passwd -F perm=wa -F key=identity Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  207. RHEL-10-500740 CAT II V-281160 · SRG-OS-000004-GPOS-00004

    RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/shadow".

    Maps to AC-2(1), AC-2(4), AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000018, CCI-000130, CCI-000135, CCI-000169, CCI-000015, CCI-002884, CCI-000172, CCI-001403, CCI-001404, CCI-001405, CCI-002130
    Check

    Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect "/etc/shadow" with the following command: $ sudo auditctl -l | egrep '(/etc/shadow)' -a always,exit -F arch=b32 -F path=/etc/shadow -F perm=wa -F key=identity -a always,exit -F arch=b64 -F path=/etc/shadow -F perm=wa -F key=identity If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/shadow". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -F path=/etc/shadow -F perm=wa -F key=identity -a always,exit -F arch=b64 -F path=/etc/shadow -F perm=wa -F key=identity Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  208. RHEL-10-500750 CAT II V-281161 · SRG-OS-000392-GPOS-00172

    RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect "/var/log/faillock".

    Maps to AU-12, MA-4(1) via CCI-002884, CCI-000172
    Check

    Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect "/var/log/faillock" with the following command: $ sudo auditctl -l | grep /var/log/faillock -a always,exit -F arch=b32 -F path=/var/log/faillock -F perm=wa -F key=identity -a always,exit -F arch=b64 -F path=/var/log/faillock -F perm=wa -F key=identity If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/var/log/faillock". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -F path=/var/log/faillock -F perm=wa -F key=identity -a always,exit -F arch=b64 -F path=/var/log/faillock -F perm=wa -F key=identity Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  209. RHEL-10-500760 CAT II V-281162 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect "/var/log/lastlog".

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect "/var/log/lastlog" with the following command: $ sudo auditctl -l | grep /var/log/lastlog -a always,exit -F arch=b32 -F path=/var/log/lastlog -F perm=wa -F key=logins -a always,exit -F arch=b64 -F path=/var/log/lastlog -F perm=wa -F key=logins If the command does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/var/log/lastlog". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -F path=/var/log/lastlog -F perm=wa -F key=logins -a always,exit -F arch=b64 -F path=/var/log/lastlog -F perm=wa -F key=logins Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  210. RHEL-10-500780 CAT II V-281163 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for all uses of the "chmod", "fchmod", "fchmodat", and "fchmodat2" syscalls.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "chmod", "fchmod", "fchmodat", and "fchmodat2" syscalls with the following command: $ sudo auditctl -l | grep chmod -a always,exit -F arch=b32 -S chmod,fchmod,fchmodat,fchmodat2 -F auid>=1000 -F auid!=unset -k perm_mod -a always,exit -F arch=b64 -S chmod,fchmod,fchmodat,fchmodat2 -F auid>=1000 -F auid!=unset -k perm_mod If both the "b32" and "b64" audit rules are not defined for the "chmod", "fchmod", "fchmodat", and "fchmodat2" syscalls, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the "chmod", "fchmod", "fchmodat", and "fchmodat2" syscalls. Add or update the following rules in "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -S chmod,fchmod,fchmodat,fchmodat2 -F auid>=1000 -F auid!=unset -k perm_mod -a always,exit -F arch=b64 -S chmod,fchmod,fchmodat,fchmodat2 -F auid>=1000 -F auid!=unset -k perm_mod Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  211. RHEL-10-500790 CAT II V-281164 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for all uses of the "chown", "fchown", "fchownat", and "lchown" syscalls.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit the execution of the "chown", "fchown", "fchownat", and "lchown" syscalls with the following command: $ sudo auditctl -l | grep chown -a always,exit -F arch=b32 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=unset -k perm_mod -a always,exit -F arch=b64 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=unset -k perm_mod If both the "b32" and "b64" audit rules are not defined for the "chown", "fchown", "fchownat", and "lchown" syscalls, this is a finding.

    Fix

    Configure RHEL 10 to generate audit records upon successful/unsuccessful attempts to use the "chown", "fchown", "fchownat", and "lchown"" syscalls. Add or update the following rules in "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=unset -k perm_mod -a always,exit -F arch=b64 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=unset -k perm_mod Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  212. RHEL-10-500810 CAT II V-281165 · SRG-OS-000037-GPOS-00015

    RHEL 10 must generate audit records for all uses of the "rename", "unlink", "rmdir", "renameat", "renameat2", and "unlinkat" system calls.

    Maps to AU-3, AU-3(1), AU-12, MA-4(1) via CCI-000130, CCI-000135, CCI-000169, CCI-002884, CCI-000172
    Check

    Verify RHEL 10 is configured to audit successful/unsuccessful attempts to use the "rename", "unlink", "rmdir", "renameat", "renameat2", and "unlinkat" system calls with the following command: $ sudo auditctl -l | grep 'rename\|unlink\|rmdir' -a always,exit -F arch=b32 -S rename,unlink,rmdir,renameat,renameat2,unlinkat -F auid>=1000 -F auid!=unset -k delete -a always,exit -F arch=b64 -S rename,unlink,rmdir,renameat,renameat2,unlinkat -F auid>=1000 -F auid!=unset -k delete If the command does not return an audit rule for "rename", "unlink", "rmdir", "renameat", and "unlinkat", or any of the lines returned are commented out, this is a finding.

    Fix

    Configure RHEL 10 to generate an audit event for any successful/unsuccessful use of the "rename", "unlink", "rmdir", "renameat", "renameat2", and "unlinkat" system calls by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: -a always,exit -F arch=b32 -S rename,unlink,rmdir,renameat,renameat2,unlinkat -F auid>=1000 -F auid!=unset -k delete -a always,exit -F arch=b64 -S rename,unlink,rmdir,renameat,renameat2,unlinkat -F auid>=1000 -F auid!=unset -k delete Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart

  213. RHEL-10-600000 CAT II V-281166 · SRG-OS-000080-GPOS-00048

    RHEL 10 must require authentication upon booting into single-user and maintenance modes.

    Maps to AC-3 via CCI-000213
    Check

    Verify that RHEL 10 requires a password for the GRUB 2 bootloader to prevent unauthorized modifications to boot parameters. Check the unified configuration file where the GRUB 2 password is stored: # sudo grep -iw "GRUB2_PASSWORD" /boot/grub2/user.cfg GRUB2_PASSWORD=grub.pbkdf2.sha512.[password_hash] If the "GRUB2_PASSWORD" entry does not exist, is commented out, or if the hash does not begin with "grub.pbkdf2.sha512", this is a finding.

    Fix

    Configure RHEL 10 to require a grub bootloader password for the grub superuser account. Generate an encrypted grub2 password for the grub superuser account with the following command: $ sudo grub2-setpassword Enter password: Confirm password:

  214. RHEL-10-600010 CAT II V-281167 · SRG-OS-000080-GPOS-00048

    RHEL 10 must require a unique superusers name upon booting into single-user and maintenance modes.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 requires a unique superusers name upon booting into single-user and maintenance modes. Verify that the boot loader superuser account has been set with the following command: $ sudo grep -A1 "superusers" /etc/grub2.cfg set superusers="" export superusers password_pbkdf2 ${GRUB2_PASSWORD} Verify is not a common name such as root, admin, or administrator. If superusers contains easily guessable usernames, this is a finding.

    Fix

    Configure RHEL 10 to have a unique username for the grub superuser account. Edit the "/etc/grub.d/01_users" file and add or modify the following lines with a nondefault username for the superuser account: set superusers="" export superusers Once the superuser account has been added, update the "grub.cfg" file by regenerating the GRUB configuration with the following command: $ sudo grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline Reboot the system: $ sudo reboot

  215. RHEL-10-600020 CAT II V-281168 · SRG-OS-000445-GPOS-00199

    RHEL 10 must not assign an interactive login shell for system accounts.

    Maps to SI-6 via CCI-002696
    Check

    Verify that RHEL 10 system accounts do not have an interactive login shell. Run the following command to list any system account (UID 0 && $3 < 1000) && $1 !~ /^(halt|sync|shutdown)$/ && $7 !~ /(nologin|false)$/) {print $1 ":" $3 ":" $7}' /etc/passwd If the command returns any output, this is a finding.

    Fix

    Configure RHEL 10 so that all noninteractive accounts on the system do not have an interactive shell assigned to them. If the system account needs a shell assigned for mission operations, document the need with the information system security officer (ISSO). Run the following command to disable the interactive shell for a specific noninteractive user account: $ sudo usermod --shell /usr/sbin/nologin

  216. RHEL-10-600100 CAT II V-281169 · SRG-OS-000076-GPOS-00044

    RHEL 10 user account passwords for new users or password changes must have a 180-day maximum password lifetime restriction in /etc/login.defs.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify that RHEL 10 enforces a 180-day maximum password lifetime for new user accounts by running the following command: $ sudo grep -i pass_max_days /etc/login.defs PASS_MAX_DAYS 180 If the "PASS_MAX_DAYS" parameter value is greater than "180", or commented out, this is a finding.

    Fix

    Configure RHEL 10 to enforce a 180-day maximum password lifetime. Add, or modify the following line in the "/etc/login.defs" file: PASS_MAX_DAYS 180

  217. RHEL-10-600110 CAT II V-281170 · SRG-OS-000076-GPOS-00044

    RHEL 10 must, for user account passwords, have a 180-day maximum password lifetime restriction

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 enforces a 180-day maximum time period for existing user account passwords with the following commands: $ sudo awk -F: '$5 > 180 {print $1 " " $5}' /etc/shadow $ sudo awk -F: '$5 <= 0 {print $1 " " $5}' /etc/shadow If any results are returned that are not associated with a system account, this is a finding.

    Fix

    Configure RHEL 10 to enforce a 180-day maximum password lifetime restriction on user account passwords. Set the 180-day maximum password lifetime restriction with the following command: $ sudo passwd -x 180 [user]

  218. RHEL-10-600120 CAT II V-281171 · SRG-OS-000433-GPOS-00192

    RHEL 10 must assign a home directory for local interactive user accounts upon creation.

    Maps to SI-16 via CCI-002824
    Check

    Verify RHEL 10 assigns a home directory for local interactive user accounts upon creation with the following command: $ sudo grep -i create_home /etc/login.defs CREATE_HOME yes If the value for "CREATE_HOME" parameter is not set to "yes", the line is missing, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to assign home directories to all new local interactive users by setting the "CREATE_HOME" parameter in "/etc/login.defs" to "yes" as follows: CREATE_HOME yes

  219. RHEL-10-600130 CAT II V-281172 · SRG-OS-000104-GPOS-00051

    RHEL 10 must not allow duplicate user IDs (UIDs) to exist for interactive users.

    Maps to IA-2, IA-8 via CCI-000764, CCI-000804
    Check

    Verify RHEL 10 contains no duplicate UIDs for interactive users with the following command: $ sudo awk -F ":" 'list[$3]++{print $1, $3}' /etc/passwd If output is produced and the accounts listed are interactive user accounts, this is a finding.

    Fix

    Configure RHEL 10 to not allow duplicate UIDs to exist for interactive users. Edit the file "/etc/passwd", and provide each interactive user account that has a duplicate UID with a unique UID.

  220. RHEL-10-600140 CAT II V-281173 · SRG-OS-000123-GPOS-00064

    RHEL 10 must automatically expire temporary accounts within 72 hours.

    Maps to AC-2(2) via CCI-001682, CCI-000016
    Check

    Verify RHEL 10 automatically expires temporary accounts within 72 hours. For every existing temporary account, run the following command to obtain its account expiration information: $ sudo chage -l | grep -i "account expires" Verify each of these accounts has an expiration date set within 72 hours. If any temporary accounts have no expiration date set or do not expire within 72 hours, this is a finding.

    Fix

    Configure RHEL 10 to expire temporary accounts after 72 hours with the following command: $ sudo chage -E $(date -d +3days +%Y-%m-%d)

  221. RHEL-10-600150 CAT II V-281174 · SRG-OS-000104-GPOS-00051

    RHEL 10 must assign a primary group to all interactive users.

    Maps to IA-2 via CCI-000764
    Check

    Verify RHEL 10 interactive users have a valid GID. Check that the interactive users have a valid GID with the following command: $ sudo pwck -r If pwck reports "no group" for any interactive user, this is a finding.

    Fix

    Configure RHEL 10 so that all GIDs referenced in "/etc/passwd" are defined in "/etc/group". Edit the file "/etc/passwd" and ensure that every user's GID is a valid GID.

  222. RHEL-10-600160 CAT II V-281175 · SRG-OS-000118-GPOS-00060

    RHEL 10 must disable account identifiers (individuals, groups, roles, and devices) after 35 days of inactivity.

    Maps to AC-2(3) via CCI-003627, CCI-003628
    Check

    Verify RHEL 10 account identifiers (individuals, groups, roles, and devices) are disabled after 35 days of inactivity. Check the account inactivity value by performing the following command: $ sudo grep -i inactive /etc/default/useradd INACTIVE=35 If "INACTIVE" is set to "-1", a value greater than "35", or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to disable account identifiers after 35 days of inactivity after the password expiration. Run the following command to change the configuration for "useradd": $ sudo useradd -D -f 35 A recommendation is 35 days, but a lower value is acceptable.

  223. RHEL-10-600170 CAT II V-281176 · SRG-OS-000362-GPOS-00149

    RHEL 10 must be configured so that all local interactive user initialization file executable search path statements do not contain statements that will reference a working directory other than user home directories.

    Maps to CM-11(2) via CCI-003980
    Check

    Verify RHEL 10 local interactive user initialization file executable search path statements do not contain statements that will reference a working directory other than user home directories with the following commands: $ sudo find /home -maxdepth 2 -type f -name ".[^.]*" -exec grep -iH path= {} \; PATH="$HOME/.local/bin:$HOME/bin:$PATH" If any local interactive user initialization files have executable search path statements that include directories outside of their home directory, and this is not documented with the ISSO as an operational requirement, this is a finding.

    Fix

    Configure RHEL 10 so that all local interactive user initialization file executable search path statements do not contain statements that will reference a working directory other than user home directories. Edit the local interactive user initialization files to change any PATH variable statements that reference directories other than their home directory. If a local interactive user requires path variables to reference a directory owned by the application, it must be documented with the ISSO.

  224. RHEL-10-600180 CAT II V-281177 · SRG-OS-000420-GPOS-00186

    RHEL 10 must assign a home directory to all local interactive users in the "/etc/passwd" file.

    Maps to SC-5 via CCI-002385
    Check

    Verify RHEL 10 interactive users have a home directory assigned with the following command: $ sudo awk -F: '($3>=1000)&&($7 !~ /nologin/){print $1, $3, $6}' /etc/passwd nsauser:x:1000:1000:nsauser:/home/nsauser:/bin/bash disauser:x:1001:1001:disauser:/home/disauser:/bin/bash doduser:x:1002:1002:doduser:/home/doduser:/bin/bash Inspect the output and verify that all interactive users (normally users with a user identifier [UID] greater than 1000) have a home directory defined. If a user's home directory is not defined, this is a finding.

    Fix

    Configure RHEL 10 interactive users to have a home directory assigned in the "/etc/passwd" file. Create and assign home directories to all local interactive users on RHEL 10 that do not have a home directory assigned.

  225. RHEL-10-600190 CAT II V-281178 · SRG-OS-000420-GPOS-00186

    RHEL 10 must ensure that all local interactive user home directories defined in the "/etc/passwd" file must exist.

    Maps to SC-5 via CCI-002385
    Check

    Verify RHEL 10 interactive users' home directories exist on the system with the following command: $ sudo pwck -r user 'mailnull': directory 'var/spool/mqueue' does not exist The output should not return any interactive users. If an interactive user's home directory does not exist, this is a finding.

    Fix

    Configure RHEL 10 interactive users' home directories to exist on the system. Create home directories to all local interactive users that do not have a home directory assigned. Use the following commands to create the user home directory assigned in "/etc/ passwd": Note: The example will be for the user "disauser", who has a home directory of "/home/disauser", a user identifier (UID) of "disauser", and a group identifier (GID) of "users assigned" in "/etc/passwd". $ sudo mkdir /home/disauser $ sudo chown disauser /home/disauser $ sudo chgrp users /home/disauser $ sudo chmod 0750 /home/disauser

  226. RHEL-10-600200 CAT II V-281179 · SRG-OS-000329-GPOS-00128

    RHEL 10 must enforce a delay of at least four seconds between login prompts following a failed login attempt.

    Maps to AC-7 via CCI-002238
    Check

    Verify RHEL 10 enforces a delay of at least four seconds between console login prompts following a failed login attempt with the following command: $ sudo grep -i fail_delay /etc/login.defs FAIL_DELAY 4 If the value of "FAIL_DELAY" is not set to "4" or greater, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to enforce a delay of at least four seconds between login prompts following a failed console login attempt. Modify the "/etc/login.defs" file to set the "FAIL_DELAY" parameter to "4" or greater: FAIL_DELAY 4

  227. RHEL-10-600210 CAT II V-281180 · SRG-OS-000075-GPOS-00043

    RHEL 10 must enforce a 24-hours minimum password lifetime restriction for passwords for new users or password changes in "/etc/login.defs".

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 enforces 24 hours as the minimum password lifetime for new user accounts. Check for the value of "PASS_MIN_DAYS" in "/etc/login.defs" with the following command: $ sudo grep -i pass_min_days /etc/login.defs PASS_MIN_DAYS 1 If the "PASS_MIN_DAYS" parameter value is not "1" or greater or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to enforce 24 hours as the minimum password lifetime. Add the following line in "/etc/login.defs" (or modify the line to have the required value): PASS_MIN_DAYS 1

  228. RHEL-10-600220 CAT II V-281181 · SRG-OS-000078-GPOS-00046

    RHEL 10 must enforce that passwords be created with a minimum of 15 characters.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 enforces a minimum 15-character password length with the following command: $ sudo grep -s minlen /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf /etc/security/pwquality.conf:minlen = 15 If the command does not return a "minlen" value of "15" or greater, does not return a line, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to enforce a minimum 15-character password length. Add or update the following line in the "/etc/security/pwquality.conf" file or a configuration file in the "/etc/security/pwquality.conf.d/" directory to contain the "minlen" parameter: minlen = 15

  229. RHEL-10-600230 CAT II V-281182 · SRG-OS-000266-GPOS-00101

    RHEL 10 must enforce password complexity by requiring at least one special character to be used.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 enforces password complexity by requiring that at least one special character be used with the following command: $ sudo grep -s ocredit /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf /etc/security/pwquality.conf:# ocredit = 0 If the value of "ocredit" is a positive number or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to enforce password complexity by requiring that at least one special character be used by setting the "ocredit" option. Add or update the following line in the "/etc/security/pwquality.conf" file or a configuration file in the "/etc/security/pwquality.conf.d/" directory to contain the "ocredit" parameter: ocredit = -1

  230. RHEL-10-600240 CAT II V-281183 · SRG-OS-000070-GPOS-00038

    RHEL 10 must enforce password complexity by requiring that at least one lowercase character be used.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 enforces password complexity by requiring that at least one lowercase character be used with the following command: $ sudo grep -s lcredit /etc/security/pwquality.conf /etc/security/pwquality.conf/*.conf /etc/security/pwquality.conf:lcredit = -1 If the value of "lcredit" is a positive number or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to enforce password complexity by requiring that at least one lowercase character be used by setting the "lcredit" option. Add or update the following line in the "/etc/security/pwquality.conf" file or a configuration file in the "/etc/security/pwquality.conf.d/" directory to contain the "lcredit" parameter: lcredit = -1

  231. RHEL-10-600250 CAT II V-281184 · SRG-OS-000069-GPOS-00037

    RHEL 10 must enforce password complexity by requiring that at least one uppercase character be used.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 enforces password complexity by requiring that at least one uppercase character be used. Check the value for "ucredit" with the following command: $ sudo grep -s ucredit /etc/security/pwquality.conf /etc/security/pwquality.conf/*.conf /etc/security/pwquality.conf:ucredit = -1 If the value of "ucredit" is a positive number or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to enforce password complexity by requiring that at least one uppercase character be used by setting the "ucredit" option. Add or update the following line in the "/etc/security/pwquality.conf" file or a configuration file in the "/etc/security/pwquality.conf.d/" directory to contain the "ucredit" parameter: ucredit = -1

  232. RHEL-10-600260 CAT II V-281185 · SRG-OS-000072-GPOS-00040

    RHEL 10 must require the change of at least eight characters when passwords are changed.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 requires the change of at least eight characters when passwords are changed by checking the value of the "difok" option in "/etc/security/pwquality.conf" with the following command: $ sudo grep difok -s /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf /etc/security/pwquality.conf:difok = 8 If the value of "difok" is set to less than "8" or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to require the change of at least eight of the total number of characters when passwords are changed by setting the "difok" option. Add or update the following line in the "/etc/security/pwquality.conf" file or a configuration file in the "/etc/security/pwquality.conf.d/" directory to contain the "difok" parameter: difok = 8

  233. RHEL-10-600270 CAT II V-281186 · SRG-OS-000075-GPOS-00043

    RHEL 10 must enforce that passwords have a 24 hours/1 day minimum lifetime restriction in "/etc/shadow".

    Maps to IA-5(1) via CCI-004066
    Check

    Verify the minimum time period between password changes for each user account is one day or greater with the following command: $ sudo awk -F: '$4 < 1 {printf "%s %d\n", $1, $4}' /etc/shadow If any results are returned that are not associated with a system account, this is a finding.

    Fix

    Configure RHEL 10 so that noncompliant accounts enforce a 24 hours/1 day minimum password lifetime: $ sudo passwd -n 1 [user]

  234. RHEL-10-600280 CAT II V-281187 · SRG-OS-000072-GPOS-00040

    RHEL 10 must require the maximum number of repeating characters of the same character class to be limited to four when passwords are changed.

    Maps to IA-5(1) via CCI-004066, CCI-004065
    Check

    Verify RHEL 10 limits the value of the "maxclassrepeat" option in "/etc/security/pwquality.conf" with the following command: $ sud grep -s maxclassrepeat /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf /etc/security/pwquality.conf:maxclassrepeat = 4 If the value of "maxclassrepeat" is set to "0" or more than "4" or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to require the change of the number of repeating characters of the same character class when passwords are changed by setting the "maxclassrepeat" option. Add or update the following line in the "/etc/security/pwquality.conf" file or a configuration file in the "/etc/security/pwquality.conf.d/" directory to contain the "maxclassrepeat" parameter: maxclassrepeat = 4

  235. RHEL-10-600290 CAT II V-281188 · SRG-OS-000072-GPOS-00040

    RHEL 10 must require that the maximum number of repeating characters be limited to three when passwords are changed.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 limits the value of the "maxrepeat" option in "/etc/security/pwquality.conf" with the following command: $ sudo grep -s maxrepeat /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf /etc/security/pwquality.conf:maxrepeat = 3 If the value of "maxrepeat" is set to more than "3" or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to require the change of the number of repeating consecutive characters when passwords are changed by setting the "maxrepeat" option. Add or update the following line in the "/etc/security/pwquality.conf" file or a configuration file in the "/etc/security/pwquality.conf.d/" directory to contain the "maxrepeat" parameter: maxrepeat = 3

  236. RHEL-10-600300 CAT II V-281189 · SRG-OS-000072-GPOS-00040

    RHEL 10 must require the change of at least four character classes when passwords are changed.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 sets the value of the "minclass" option in "/etc/security/pwquality.conf" with the following command: $ sudo grep -s minclass /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf /etc/security/pwquality.conf:minclass = 4 If the value of "minclass" is set to less than "4" or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to require the change of at least four character classes when passwords are changed by setting the "minclass" option. Add or update the following line in the "/etc/security/pwquality.conf" file or a configuration file in the "/etc/security/pwquality.conf.d/" directory to contain the "minclass" parameter: minclass = 4

  237. RHEL-10-600310 CAT II V-281190 · SRG-OS-000071-GPOS-00039

    RHEL 10 must enforce password complexity by requiring that at least one numeric character be used.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 enforces password complexity by requiring that at least one numeric character be used. Check the value for "dcredit" with the following command: $ sudo grep -s dcredit /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf /etc/security/pwquality.conf:dcredit = -1 If the value of "dcredit" is a positive number or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to enforce password complexity by requiring that at least one numeric character be used by setting the "dcredit" option. Add or update the following line in the "/etc/security/pwquality.conf" file or a configuration file in the "/etc/security/pwquality.conf.d/" directory to contain the "dcredit" parameter: dcredit = -1

  238. RHEL-10-600320 CAT II V-281191 · SRG-OS-000480-GPOS-00225

    RHEL 10 must prevent the use of dictionary words for passwords.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 prevents the use of dictionary words for passwords with the following command: $ sudo grep -s dictcheck /etc/security/pwquality.conf /etc/pwquality.conf.d/*.conf /etc/security/pwquality.conf:dictcheck=1 If "dictcheck" does not have a value other than "0" or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to prevent the use of dictionary words for passwords. Add or update the following line in the "/etc/security/pwquality.conf" file or a configuration file in the "/etc/security/pwquality.conf.d/" directory to contain the "dictcheck" parameter: dictcheck=1

  239. RHEL-10-600400 CAT II V-281192 · SRG-OS-000080-GPOS-00048

    RHEL 10 must allow only the root account to have unrestricted access to the system.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that only the "root" account has a UID "0" assignment with the following command: $ awk -F: '$3 == 0 {print $1}' /etc/passwd root If any accounts other than "root" have a UID of "0", this is a finding.

    Fix

    Configure RHEL 10 so that only the "root" account has a UID assignment of "0". Change the UID of any account on the system, other than "root", that has a UID of "0". If the account is associated with system commands or applications, the UID should be changed to one greater than "0" but less than "1000". Otherwise, assign a UID of greater than "1000" that has not already been assigned.

  240. RHEL-10-600405 CAT II V-281193 · SRG-OS-000072-GPOS-00040

    RHEL 10 must enforce password complexity rules for the "root" account.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 enforces password complexity rules for the "root" account. Check if "root" user is required to use complex passwords with the following command: $ sudo grep enforce_for_root /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf /etc/security/pwquality.conf:enforce_for_root If "enforce_for_root" is commented out or is missing, this is a finding.

    Fix

    Configure RHEL 10 to enforce password complexity on the "root" account. Add or update the following line in the "/etc/security/pwquality.conf" file or a configuration file in the "/etc/security/pwquality.conf.d/" directory to contain the "enforce_for_root" parameter: enforce_for_root

  241. RHEL-10-600410 CAT II V-281194 · SRG-OS-000329-GPOS-00128

    RHEL 10 must automatically lock an account when three unsuccessful login attempts occur.

    Maps to AC-7 via CCI-002238, CCI-000044
    Check

    Verify RHEL 10 is configured to lock an account after three unsuccessful login attempts with the following command: $ sudo grep 'deny =' /etc/security/faillock.conf deny = 3 If the "deny" option is not set to "3" or less (but not "0"), or is missing or commented out, this is a finding.

    Fix

    Configure RHEL 10 to lock an account when three unsuccessful login attempts occur. Add/modify the "/etc/security/faillock.conf" file to match the following line: deny = 3

  242. RHEL-10-600415 CAT II V-281195 · SRG-OS-000329-GPOS-00128

    RHEL 10 must automatically lock the root account until the root account is released by an administrator when three unsuccessful login attempts occur during a 15-minute time period.

    Maps to AC-7 via CCI-002238, CCI-000044
    Check

    Verify RHEL 10 is configured to lock the root account after three unsuccessful login attempts with the following command: $ sudo grep even_deny_root /etc/security/faillock.conf even_deny_root If the "even_deny_root" option is not set or is missing or commented out, this is a finding.

    Fix

    Configure RHEL 10 to lock out the "root" account after a number of incorrect login attempts using "pam_faillock.so". Enable the feature using the following command: $ sudo authselect enable-feature with-faillock Edit the "/etc/security/faillock.conf" by uncommenting or adding the following line: even_deny_root

  243. RHEL-10-600420 CAT II V-281196 · SRG-OS-000329-GPOS-00128

    RHEL 10 must automatically lock an account when three unsuccessful login attempts occur during a 15-minute time period.

    Maps to AC-7 via CCI-002238, CCI-000044
    Check

    Verify RHEL 10 locks an account after three unsuccessful login attempts within a period of 15 minutes with the following command: $ sudo grep fail_interval /etc/security/faillock.conf fail_interval = 900 If the "fail_interval" option is not set to "900" or less (but not "0"), the line is commented out, or the line is missing, this is a finding.

    Fix

    Configure RHEL 10 to lock out the "root" account after a number of incorrect login attempts within 15 minutes using "pam_faillock.so". Enable the feature using the following command: $ authselect enable-feature with-faillock Edit the "/etc/security/faillock.conf" file as follows: fail_interval = 900

  244. RHEL-10-600425 CAT II V-281197 · SRG-OS-000329-GPOS-00128

    RHEL 10 must maintain an account lock until the locked account is released by an administrator.

    Maps to AC-7 via CCI-002238, CCI-000044
    Check

    Verify RHEL 10 is configured to lock an account after three unsuccessful login attempts until released by an administrator with the following command: $ sudo grep 'unlock_time =' /etc/security/faillock.conf unlock_time = 0 If the "unlock_time" option is not set to "0", or the line is missing or commented out, this is a finding.

    Fix

    Configure RHEL 10 to lock an account after three unsuccessful login attempts until released by an administrator with the following command: $ authselect enable-feature with-faillock Edit the "/etc/security/faillock.conf" file as follows: unlock_time = 0

  245. RHEL-10-600430 CAT II V-281198 · SRG-OS-000021-GPOS-00005

    RHEL 10 must ensure account lockouts persist.

    Maps to AC-7 via CCI-000044, CCI-002238
    Check

    Verify RHEL 10 is configured so that the "/etc/security/faillock.conf" file uses a nondefault "faillock" directory to ensure contents persist after reboot with the following command: $ sudo grep -w dir /etc/security/faillock.conf dir = /var/log/faillock If the "dir" option is not set to a nondefault documented tally log directory, is commented out, or is missing, this is a finding.

    Fix

    Configure RHEL 10 to maintain the contents of the "faillock" directory after a reboot. Add/modify the "/etc/security/faillock.conf" file to match the following line: dir = /var/log/faillock

  246. RHEL-10-600450 CAT II V-281199 · SRG-OS-000080-GPOS-00048

    RHEL 10 must not have unauthorized accounts.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 has no unauthorized local interactive user accounts with the following command: $ less /etc/passwd root:x:0:0:root:/root:/bin/bash ... nsauser:x:1000:1000:nsauser:/home/nsauser:/bin/bash doduser:x:1001:1001:doduser:/home/doduser:/bin/bash Interactive user accounts generally will have a user ID (UID) of 1000 or greater, a home directory in a specific partition, and an interactive shell. Obtain the list of interactive user accounts authorized to be on the system from the system administrator or information system security officer and compare it to the list of local interactive user accounts on the system. If there are unauthorized local user accounts on the system, this is a finding.

    Fix

    Configure RHEL 10 to have no unauthorized local interactive user accounts with the following command, where is the unauthorized account: $ sudo userdel

  247. RHEL-10-600455 CAT II V-281200 · SRG-OS-000069-GPOS-00037

    RHEL 10 must not allow blank or null passwords.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 prohibits the use of null passwords with the following command: $ sudo grep -i nullok /etc/pam.d/system-auth /etc/pam.d/password-auth If output is produced, this is a finding. If the system administrator (SA) can demonstrate that the required configuration is contained in a PAM configuration file included or substacked from the "system-auth" file, this is not a finding.

    Fix

    Configure RHEL 10 to prohibit the use of null passwords. If PAM is managed with "authselect", use the following command to remove instances of "nullok": $ sudo authselect enable-feature without-nullok Otherwise, remove any instances of the "nullok" option in the "/etc/pam.d/password-auth" and "/etc/pam.d/system-auth" files to prevent logins with empty passwords. Note: Manual changes to the listed file may be overwritten by the "authselect" program.

  248. RHEL-10-600460 CAT II V-281201 · SRG-OS-000069-GPOS-00037

    RHEL 10 must not have accounts configured with blank or null passwords.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 prohibits null or blank passwords with the following command: $ sudo awk -F: '!$2 {print $1}' /etc/shadow If the command returns any results, this is a finding.

    Fix

    Configure RHEL 10 so that all accounts have a password, or lock the account with the following commands: Perform a password reset: $ sudo passwd [username] To lock an account: $ sudo passwd -l [username]

  249. RHEL-10-600470 CAT II V-281202 · SRG-OS-000104-GPOS-00051

    RHEL 10 must have a unique group ID (GID) for each group in "/etc/group".

    Maps to IA-2 via CCI-000764
    Check

    Verify RHEL 10 contains no duplicate GIDs for interactive users with the following command: $ cut -d : -f 3 /etc/group | uniq -d If the system has duplicate GIDs, this is a finding.

    Fix

    Configure RHEL 10 to contain no duplicate GIDs for interactive users. Edit the file "/etc/group", and provide each group that has a duplicate GID with a unique GID.

  250. RHEL-10-600485 CAT II V-281204 · SRG-OS-000069-GPOS-00037

    RHEL 10 must ensure the password complexity module in the system-auth file is configured for three or fewer retries.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 is configured to limit the "pwquality" retry option to "3" with the following command: $ sudo grep -w retry /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf retry = 3 If the value of "retry" is set to "0" or greater than "3", is commented out, or is missing, this is a finding.

    Fix

    Configure RHEL 10 to limit the "pwquality" retry option to "3". Add or update the following line in the "/etc/security/pwquality.conf" file or a file in the "/etc/security/pwquality.conf.d/" directory to contain the "retry" parameter: retry = 3

  251. RHEL-10-600500 CAT II V-281205 · SRG-OS-000373-GPOS-00156

    RHEL 10 must restrict the use of the "su" command.

    Maps to AC-3(4), IA-11 via CCI-002038, CCI-002165
    Check

    Verify RHEL 10 requires users to be members of the "wheel" group to run "su". Verify the configuration with the following command: $ sudo grep pam_wheel /etc/pam.d/su auth required pam_wheel.so use_uid If a line for "pam_wheel.so" does not exist or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to require users to be in the "wheel" group to run the "su" command. Edit the configuration file: $ sudo vi /etc/pam.d/su Add the following lines: auth required pam_wheel.so use_uid $ sed '/^[[:space:]]*#[[:space:]]*auth[[:space:]]\+required[[:space:]]\+pam_wheel\.so[[:space:]]\+use_uid$/s/^[[:space:]]*#//' -i /etc/pam.d/su If necessary, create a "wheel" group and add administrative users to the group.

  252. RHEL-10-600510 CAT II V-281206 · SRG-OS-000373-GPOS-00156

    RHEL 10 must be configured to not bypass password requirements for privilege escalation.

    Maps to IA-11 via CCI-002038
    Check

    Verify RHEL 10 is not configured to bypass password requirements for privilege escalation with the following command: $ sudo grep pam_succeed_if /etc/pam.d/sudo If any occurrences of "pam_succeed_if" are returned, this is a finding.

    Fix

    Configure RHEL 10 to require users to supply a password for privilege escalation. Remove any occurrences of " pam_succeed_if " in the "/etc/pam.d/sudo" file.

  253. RHEL-10-600520 CAT II V-281207 · SRG-OS-000445-GPOS-00199

    RHEL 10 must restrict privilege elevation to authorized personnel.

    Maps to SI-6 via CCI-002696
    Check

    Verify RHEL 10 restricts privilege elevation to authorized personnel with the following command: $ sudo grep -riw ALL /etc/sudoers /etc/sudoers.d/ | grep -v "#" If the either of the following entries is returned, this is a finding: ALL ALL=(ALL) ALL ALL ALL=(ALL:ALL) ALL

    Fix

    Configure RHEL 10 to restrict privilege elevation to authorized personnel. Remove the following entries from the "/etc/sudoers" file or configuration file under "/etc/sudoers.d/": ALL ALL=(ALL) ALL ALL ALL=(ALL:ALL) ALL

  254. RHEL-10-600530 CAT II V-281208 · SRG-OS-000373-GPOS-00156

    RHEL 10 must require users to reauthenticate for privilege escalation.

    Maps to IA-11 via CCI-002038
    Check

    Verify RHEL 10 "/etc/sudoers" has no occurrences of "!authenticate" with the following command: $ sudo grep -ir '!authenticate' /etc/sudoers /etc/sudoers.d/ If any occurrences of "!authenticate" are returned, this is a finding.

    Fix

    Configure RHEL 10 to not allow users to execute privileged actions without authenticating. Remove any occurrence of "!authenticate" found in the "/etc/sudoers" file or files in the "/etc/sudoers.d" directory: $ sudo sed -i '/\!authenticate/ s/^/# /g' /etc/sudoers /etc/sudoers.d/*

  255. RHEL-10-600540 CAT II V-281209 · SRG-OS-000373-GPOS-00156

    RHEL 10 must require reauthentication when using the "sudo" command.

    Maps to IA-11 via CCI-002038
    Check

    Verify RHEL 10 requires reauthentication when using the "sudo" command to elevate privileges with the following command: $ sudo grep -ir 'timestamp_timeout' /etc/sudoers /etc/sudoers.d/ /etc/sudoers:Defaults timestamp_timeout=0 If results are returned from more than one file location, this is a finding. If "timestamp_timeout" is set to a negative number, is commented out, or no results are returned, this is a finding.

    Fix

    Configure RHEL 10 to reauthenticate "sudo" commands after the specified timeout. Add the following line to "/etc/sudoers" or a file in "/etc/sudoers.d": Defaults timestamp_timeout=0

  256. RHEL-10-600550 CAT II V-281210 · SRG-OS-000373-GPOS-00156

    RHEL 10 must use the invoking user's password for privilege escalation when using "sudo".

    Maps to IA-11 via CCI-002038
    Check

    Verify RHEL 10 sudoers security policy is configured to use the invoking user's password for privilege escalation with the following command: $ sudo grep -irE '(!rootpw|!targetpw|!runaspw)' /etc/sudoers /etc/sudoers.d/ | grep -v '#' /etc/sudoers:Defaults !targetpw /etc/sudoers:Defaults !rootpw /etc/sudoers:Defaults !runaspw If no results are returned, this is a finding. If results are returned from more than one file location, this is a finding. If "Defaults !targetpw" is not defined, this is a finding. If "Defaults !rootpw" is not defined, this is a finding. If "Defaults !runaspw" is not defined, this is a finding.

    Fix

    Configure RHEL 10 to use the invoking user's password for privilege escalation when using "sudo". Define the following in the Defaults section of the /etc/sudoers file or a single configuration file in the /etc/sudoers.d/ directory: Defaults !targetpw Defaults !rootpw Defaults !runaspw

  257. RHEL-10-600600 CAT II V-281212 · SRG-OS-000021-GPOS-00005

    RHEL 10 must configure the use of the pam_faillock.so module in the "/etc/pam.d/system-auth" file.

    Maps to AC-7 via CCI-000044
    Check

    Verify RHEL 10 includes the use of the pam_faillock.so module in the "/etc/pam.d/system-auth" file: $ sudo grep pam_faillock.so /etc/pam.d/system-auth auth required pam_faillock.so preauth auth required pam_faillock.so authfail account required pam_faillock.so If the pam_faillock.so module is not present in the "/etc/pam.d/system-auth" file with the "preauth" line listed before pam_unix.so, this is a finding. If the system administrator can demonstrate that the required configuration is contained in a PAM configuration file included or substacked from the "system-auth" file, this is not a finding.

    Fix

    Configure RHEL 10 to include the use of the pam_faillock.so module in the "/etc/pam.d/system-auth" file. If PAM is managed with authselect, enable the feature with the following command: $ sudo authselect enable-feature with-faillock Otherwise, add/modify the appropriate sections of the "/etc/pam.d/system-auth" file to match the following lines: Note: The "preauth" line must be listed before pam_unix.so. auth required pam_faillock.so preauth auth required pam_faillock.so authfail account required pam_faillock.so

  258. RHEL-10-600610 CAT II V-281213 · SRG-OS-000021-GPOS-00005

    RHEL 10 must configure the use of the pam_faillock.so module in the "/etc/pam.d/password-auth" file.

    Maps to AC-7 via CCI-000044
    Check

    Verify RHEL 10 includes the pam_faillock.so module in the "/etc/pam.d/password-auth" file: $ sudo grep pam_faillock.so /etc/pam.d/password-auth auth required pam_faillock.so preauth auth required pam_faillock.so authfail account required pam_faillock.so If the pam_faillock.so module is not present in the "/etc/pam.d/password-auth" file with the "preauth" line listed before pam_unix.so, this is a finding. If the system administrator can demonstrate that the required configuration is contained in a Pluggable Authentication Module (PAM) configuration file included or substacked from the "system-auth" file, this is not a finding.

    Fix

    Configure RHEL 10 to include the use of the pam_faillock.so module in the "/etc/pam.d/password-auth" file. If PAM is managed with "authselect", enable the feature with the following command: $ sudo authselect enable-feature with-faillock Otherwise, add/modify the appropriate sections of the "/etc/pam.d/password-auth" file to match the following lines: Note: The "preauth" line must be listed before pam_unix.so. auth required pam_faillock.so preauth auth required pam_faillock.so authfail account required pam_faillock.so

  259. RHEL-10-600620 CAT II V-281214 · SRG-OS-000069-GPOS-00037

    RHEL 10 must ensure the password complexity module is enabled in the "password-auth" file.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 uses "pwquality" to enforce the password complexity rules in the "password-auth" file with the following command: $ sudo grep pam_pwquality /etc/pam.d/password-auth password required pam_pwquality.so If the command does not return a line containing the value "pam_pwquality.so", or the line is commented out, this is a finding. If the system administrator can demonstrate that the required configuration is contained in a PAM configuration file included or substacked from the "system-auth" file, this is not a finding.

    Fix

    Configure RHEL 10 to use "pwquality" to enforce password complexity rules. Add the following line to the "/etc/pam.d/password-auth" file (or modify the line to have the required value): password required pam_pwquality.so

  260. RHEL-10-600630 CAT II V-281215 · SRG-OS-000069-GPOS-00037

    RHEL 10 must ensure the password complexity module is enabled in the "system-auth" file.

    Maps to IA-5(1) via CCI-004066
    Check

    Verify RHEL 10 uses "pwquality" to enforce the password complexity rules in the "system-auth" file with the following command: $ sudo grep pam_pwquality /etc/pam.d/system-auth password required pam_pwquality.so If the command does not return a line containing the value "pam_pwquality.so", or the line is commented out, this is a finding. If the system administrator can demonstrate that the required configuration is contained in a PAM configuration file included or substacked from the "system-auth" file, this is not a finding.

    Fix

    Configure RHEL 10 to use "pwquality" to enforce password complexity rules. Add the following line to the "/etc/pam.d/system-auth" file (or modify the line to have the required value): password required pam_pwquality.so

  261. RHEL-10-600650 CAT II V-281217 · SRG-OS-000073-GPOS-00041

    RHEL 10 must ensure that the pam_unix.so module is configured in the password-auth file to use a FIPS 140-3-approved cryptographic hashing algorithm for system authentication.

    Maps to IA-5(1), IA-7 via CCI-004062, CCI-000803
    Check

    Verify RHEL 10 configures the pam_unix.so module to use sha512 in "/etc/pam.d/password-auth" with the following command: $ sudo grep "^password.*pam_unix.so.*sha512" /etc/pam.d/password-auth password sufficient pam_unix.so sha512 If "sha512" is missing, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to use the sha512 cryptographic hashing algorithm for local account passwords. Edit/modify the following line in the "/etc/pam.d/password-auth" file to include the sha512 option for pam_unix.so: password sufficient pam_unix.so sha512

  262. RHEL-10-600700 CAT II V-281218 · SRG-OS-000073-GPOS-00041

    RHEL 10 must be configured to use a sufficient number of hashing rounds for the shadow password suite.

    Maps to IA-5(1), IA-7 via CCI-004062, CCI-000803
    Check

    Verify RHEL 10 uses a sufficient number of rounds for the shadow password suite hashing algorithm with the following command: $ sudo grep rounds /etc/pam.d/system-auth password sufficient pam_unix.so sha512 rounds=100000 If the setting is not configured or "rounds" is less than 100000, this a finding.

    Fix

    Configure RHEL 10 to use a sufficient number of hashing rounds for shadow password suite. Add or modify the following line in "/etc/pam.d/system-auth" and set "rounds" to 100000: password sufficient pam_unix.so sha512 rounds=100000

  263. RHEL-10-600710 CAT II V-281219 · SRG-OS-000073-GPOS-00041

    RHEL 10 must be configured to use a FIPS 140-3-approved cryptographic hashing algorithm for system authentication by ensuring that the pam_unix.so module is configured in the "system-auth" file.

    Maps to IA-5(1), IA-7 via CCI-004062, CCI-000803
    Check

    Verify RHEL 10 is configured to use a FIPS 140-3-approved cryptographic hashing algorithm in "/etc/pam.d/system-auth" via the pam_unix.so module with the following command: $ sudo grep "^password.*pam_unix.so.*sha512" /etc/pam.d/system-auth password sufficient pam_unix.so sha512 If "sha512" is missing, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to use a FIPS 140-3-approved cryptographic hashing algorithm for system authentication in "/etc/pam.d/system-auth" via the "pam_unix.so" module. Edit/modify the following line in the "/etc/pam.d/system-auth" file to include the sha512 option for pam_unix.so: password sufficient pam_unix.so sha512

  264. RHEL-10-600720 CAT II V-281220 · SRG-OS-000073-GPOS-00041

    RHEL 10 must be configured so that password-auth uses a sufficient number of hashing rounds.

    Maps to IA-5(1), IA-7 via CCI-004062, CCI-000803
    Check

    Verify RHEL 10 is configured to use a sufficient number of rounds for password hashing with the following command: $ sudo grep rounds /etc/pam.d/password-auth password sufficient pam_unix.so sha512 rounds=100000 If the setting is not configured or "rounds" is less than "100000", this a finding.

    Fix

    Configure RHEL 10 to use "100000" hashing rounds for hashing passwords. Add or modify the following line in "/etc/pam.d/password-auth" and set "rounds" to "100000": password sufficient pam_unix.so sha512 rounds=100000

  265. RHEL-10-700010 CAT II V-281224 · SRG-OS-000080-GPOS-00048

    RHEL 10 must display the Standard Mandatory DoW Notice and Consent Banner before granting local or remote access to the system via a Secure Shell (SSH) login.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that any SSH connection to the operating system displays the Standard Mandatory DoW Notice and Consent Banner before granting access to the system. Check for the location of the banner file currently being used with the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*banner' /etc/ssh/sshd_config.d/10-stig.conf:Banner /etc/issue If the line is commented out or the file is missing, this is a finding.

    Fix

    Configure RHEL 10 to display the Standard Mandatory DoW Notice and Consent Banner before granting access to the system via SSH. Edit a file in "/etc/ssh/sshd_config.d" to uncomment or add the banner keyword and configure it to point to a file that will contain the login banner (this file may be named differently or be in a different location if using a version of SSH that is provided by a third-party vendor). An example configuration line is: Banner /etc/issue

  266. RHEL-10-700020 CAT II V-281225 · SRG-OS-000023-GPOS-00006

    RHEL 10 must display the Standard Mandatory DoW Notice and Consent Banner before granting local or remote access to the system via a graphical user login.

    Maps to AC-8 via CCI-000048, CCI-001384, CCI-001385, CCI-001386, CCI-001387, CCI-001388
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, Gnome Shell. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 displays the Standard Mandatory DoW Notice and Consent Banner before granting access to the operating system via a graphical user login with the following command: $ gsettings get org.gnome.login-screen banner-message-text banner-message-text= 'You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n-At any time, the USG may inspect and seize data stored on this IS.\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details. ' Note: The "\n " characters are for formatting only. They will not be displayed on the graphical interface. If the banner does not match the Standard Mandatory DoW Notice and Consent Banner exactly, this is a finding.

    Fix

    Configure RHEL 10 to display the Standard Mandatory DoW Notice and Consent Banner before granting access to the system. Add the following lines to the [org/gnome/login-screen] section of the "/etc/dconf/db/local.d/01-banner-message": banner-message-text='You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n-At any time, the USG may inspect and seize data stored on this IS.\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details. ' Note: The "\n " characters are for formatting only. They will not be displayed on the graphical interface. Run the following command to update the database: $ sudo dconf update

  267. RHEL-10-700030 CAT II V-281226 · SRG-OS-000023-GPOS-00006

    RHEL 10 must prevent a user from overriding the banner-message-enable setting for the graphical user interface.

    Maps to AC-8 via CCI-000048, CCI-001384, CCI-001385, CCI-001386, CCI-001387, CCI-001388
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 prevents a user from overriding settings for graphical user interfaces with the following command: $ gsettings writable org.gnome.login-screen banner-message-enable false If "banner-message-enable" is writable, or the result is "true", this is a finding.

    Fix

    Configure RHEL 10 to prevent a user from overriding the banner setting for graphical user interfaces. Create a database to contain the systemwide graphical user login settings (if it does not already exist) with the following command: $ sudo vi /etc/dconf/db/local.d/locks/session Add the following setting to prevent nonprivileged users from modifying it: /org/gnome/login-screen/banner-message-enable Run the following command to update the database: $ sudo dconf update

  268. RHEL-10-700040 CAT II V-281227 · SRG-OS-000023-GPOS-00006

    RHEL 10 must display the Standard Mandatory DoW Notice and Consent Banner before granting local or remote access to the system via a command line user login.

    Maps to AC-8 via CCI-000048, CCI-001384, CCI-001385, CCI-001386, CCI-001387, CCI-001388
    Check

    Verify RHEL 10 displays the Standard Mandatory DoW Notice and Consent Banner before granting access to the operating system via a command line login screen with the following command: $ cat /etc/issue If the banner is set correctly, it will return the following text: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." If the banner text does not match the Standard Mandatory DoW Notice and Consent Banner exactly, or the line is commented out, this is a finding.

    Fix

    Configure RHEL 10 to display the Standard Mandatory DoW Notice and Consent Banner before granting access to the system via command line login. Edit the "/etc/issue" file to replace the default text with the Standard Mandatory DoW Notice and Consent Banner. The DoW-required text is: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests -- not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details."

  269. RHEL-10-700100 CAT II V-281228 · SRG-OS-000080-GPOS-00048

    RHEL 10 must prevent special devices on file systems that are imported via Network File System (NFS).

    Maps to AC-3 via CCI-000213
    Check

    Note: If no NFS mounts are configured, this requirement is not applicable. Verify RHEL 10 has the "nodev" option configured for all NFS mounts with the following command: $ sudo grep nfs /etc/fstab 192.168.22.2:/mnt/export /data nfs4 rw,nosuid,nodev,noexec,sync,soft,sec=krb5:krb5i:krb5p If the system is mounting file systems via NFS and the "nodev" option is missing, this is a finding.

    Fix

    Configure RHEL 10 to prevent special devices on file systems that are imported via NFS. Update each NFS mounted file system to use the "nodev" option on file systems that are being imported via NFS.

  270. RHEL-10-700105 CAT II V-281229 · SRG-OS-000080-GPOS-00048

    RHEL 10 must prevent code from being executed on file systems that are imported via Network File System (NFS).

    Maps to AC-3 via CCI-000213
    Check

    Note: If no NFS mounts are configured, this requirement is not applicable. Verify RHEL 10 has the "noexec" option configured for all NFS mounts with the following command: $ sudo grep nfs /etc/fstab 192.168.22.2:/mnt/export /data nfs4 rw,nosuid,nodev,noexec,sync,soft,sec=krb5:krb5i:krb5p If the system is mounting file systems via NFS and the "noexec" option is missing, this is a finding.

    Fix

    Configure RHEL 10 to prevent code from being executed on file systems that are imported via NFS. Update each NFS mounted file system to use the "noexec" option on file systems that are being imported via NFS.

  271. RHEL-10-700110 CAT II V-281230 · SRG-OS-000080-GPOS-00048

    RHEL 10 must prevent files with the "setuid" and "setgid" bit set from being executed on file systems that are imported via Network File System (NFS).

    Maps to AC-3 via CCI-000213
    Check

    Note: If no NFS mounts are configured, this requirement is not applicable. Verify RHEL 10 has the "nosuid" option configured for all NFS mounts with the following command: $ sudo grep nfs /etc/fstab 192.168.22.2:/mnt/export /data nfs4 rw,nosuid,nodev,noexec,sync,soft,sec=krb5:krb5i:krb5p If the system is mounting file systems via NFS and the "nosuid" option is missing, this is a finding.

    Fix

    Configure RHEL 10 to prevent files with the "setuid" and "setgid" bit set from being executed on file systems that are imported via NFS. Update each NFS mounted file system to use the "nosuid" option on file systems that are being imported via NFS.

  272. RHEL-10-700115 CAT II V-281231 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that the Network File System (NFS) is configured to use RPCSEC_GSS.

    Maps to AC-3 via CCI-000213
    Check

    Note: If no NFS mounts are configured, this requirement is not applicable. Verify RHEL 10 has the "sec" option configured for all NFS mounts with the following command: $ sudo grep nfs /etc/fstab 192.168.22.2:/mnt/export /data nfs4 rw,nosuid,nodev,noexec,sync,soft,sec=krb5p:krb5i:krb5 If the system is mounting file systems via NFS and has the sec option without the "krb5:krb5i:krb5p" settings, the "sec" option has the "sys" setting, or the "sec" option is missing, this is a finding.

    Fix

    Configure RHEL 10 so that the "/etc/fstab" file "sec" option is defined for each NFS mounted file system, and the "sec" option does not have the "sys" setting. Ensure the "sec" option is defined as "krb5p:krb5i:krb5".

  273. RHEL-10-700120 CAT II V-281232 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/boot" with the "nodev" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that the "/boot" mount point has the "nodev" option with the following command: $ mount | grep '\s/boot\s' /dev/sda1 on /boot type xfs (rw,nodev,nosuid,relatime,seclabel,attr2) If the "/boot" file system does not have the "nodev" option set, this is a finding.

    Fix

    Configure RHEL 10 to mount "/boot" with the "nodev" option. Modify "/etc/fstab" to use the "nodev" option on the "/boot" directory. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /boot

  274. RHEL-10-700125 CAT II V-281233 · SRG-OS-000368-GPOS-00154

    RHEL 10 must prevent files with the "setuid" and "setgid" bit set from being executed on the "/boot" directory.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that the "/boot" directory is mounted with the "nosuid" option with the following command: $ mount | grep '\s/boot\s' /dev/sda1 on /boot type xfs (rw,nodev,nosuid,relatime,seclabel,attr2) If the "/boot" file system does not have the "nosuid" option set, this is a finding.

    Fix

    Configure RHEL 10 to prevent files with the "setuid" and "setgid" bit set from being executed on the "/boot" directory. Modify "/etc/fstab" to use the "nosuid" option on the "/boot" directory. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /boot

  275. RHEL-10-700130 CAT II V-281234 · SRG-OS-000080-GPOS-00048

    RHEL 10 must prevent files with the "setuid" and "setgid" bit set from being executed on the "/boot/efi" directory.

    Maps to AC-3 via CCI-000213
    Check

    Note: For systems that use BIOS and for vfat systems, this requirement is not applicable. Verify RHEL 10 is configured so that the "/boot/efi "directory is mounted with the "nosuid" option with the following command: $ mount | grep '\s/boot/efi\s' /dev/sda1 on /boot/efi type vfat (rw,nosuid,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro) If the "/boot/efi" file system does not have the "nosuid" option set, this is a finding.

    Fix

    Configure RHEL 10 to prevent files with the "setuid" and "setgid" bit set from being executed on the "/boot/efi" directory. Modify "/etc/fstab" to use the "nosuid" option on the "/boot/efi" directory. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /boot/efi

  276. RHEL-10-700135 CAT II V-281235 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/dev/shm" with the "nodev" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/dev/shm" is mounted with the "nodev" option with the following command: $ mount | grep /dev/shm tmpfs on /dev/shm type tmpfs (rw,nodev,nosuid,noexec,seclabel) If the "/dev/shm" file system is mounted without the "nodev" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/dev/shm" with the "nodev" option. Modify "/etc/fstab" to use the "nodev" option on the "/dev/shm" file system. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /dev/shm

  277. RHEL-10-700140 CAT II V-281236 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/dev/shm" with the "noexec" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/dev/shm" is mounted with the "noexec" option with the following command: $ mount | grep /dev/shm tmpfs on /dev/shm type tmpfs (rw,nodev,nosuid,noexec,seclabel) If the "/dev/shm" file system is mounted without the "noexec" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/dev/shm" with the "noexec" option. Modify "/etc/fstab" to use the "noexec" option on the "/dev/shm" file system. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /dev/shm

  278. RHEL-10-700145 CAT II V-281237 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/dev/shm" with the "nosuid" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/dev/shm" is mounted with the "nosuid" option with the following command: $ mount | grep /dev/shm tmpfs on /dev/shm type tmpfs (rw,nodev,nosuid,noexec,seclabel) If the "/dev/shm" file system is mounted without the "nosuid" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/dev/shm" with the "nosuid" option. Modify "/etc/fstab" to use the "nosuid" option on the "/dev/shm" file system. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /dev/shm

  279. RHEL-10-700150 CAT II V-281238 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/tmp" with the "nodev" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/tmp" is mounted with the "nodev" option: $ mount | grep /tmp /dev/mapper/luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2) If the "/tmp" file system is mounted without the "nodev" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/tmp" with the "nodev" option. Modify "/etc/fstab" to use the "nodev" option on the "/tmp" directory. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /tmp

  280. RHEL-10-700155 CAT II V-281239 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/tmp" with the "noexec" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/tmp" is mounted with the "noexec" option: $ mount | grep /tmp /dev/mapper/luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2) If the "/tmp" file system is mounted without the "noexec" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/tmp" with the "noexec" option. Modify "/etc/fstab" to use the "noexec" option on the "/tmp" directory. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /tmp

  281. RHEL-10-700160 CAT II V-281240 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/tmp" with the "nosuid" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/tmp" is mounted with the "nosuid" option: $ mount | grep /tmp /dev/mapper/luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2) If the "/tmp" file system is mounted without the "nosuid" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/tmp" with the "nosuid" option. Modify "/etc/fstab" to use the "nosuid" option on the "/tmp" directory. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /tmp

  282. RHEL-10-700165 CAT II V-281241 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/var" with the "nodev" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/var" is mounted with the "nodev" option: $ mount | grep /var /dev/mapper/luks-51150299-f295-4145-b8f0-ebe9c6dfd5a0 on /var type xfs (rw,nodev,relatime,seclabel,attr2) If the "/var" file system is mounted without the "nodev" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/var" with the "nodev" option. Modify "/etc/fstab" to use the "nodev" option on the "/var" directory. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /var

  283. RHEL-10-700170 CAT II V-281242 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/var/log" with the "nodev" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/var/log" is mounted with the "nodev" option: $ mount | grep /var/log /dev/mapper/luks-c651f493-9fdc-4c6e-a711-0a4f03149661 on /var/log type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2) If the "/var/log" file system is mounted without the "nodev" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/var/log" with the "nodev" option. Modify "/etc/fstab" to use the "nodev" option on the "/var/log" directory. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /var/log

  284. RHEL-10-700175 CAT II V-281243 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/var/log" with the "noexec" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/var/log" is mounted with the "noexec" option: $ mount | grep /var/log /dev/mapper/luks-c651f493-9fdc-4c6e-a711-0a4f03149661 on /var/log type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2) If the "/var/log" file system is mounted without the "noexec" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/var/log" with the "noexec" option. Modify "/etc/fstab" to use the "noexec" option on the "/var/log" directory. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /var/log

  285. RHEL-10-700180 CAT II V-281244 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/var/log" with the "nosuid" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/var/log" is mounted with the "nosuid" option: $ mount | grep /var/log /dev/mapper/luks-c651f493-9fdc-4c6e-a711-0a4f03149661 on /var/log type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2) If the "/var/log" file system is mounted without the "nosuid" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/var/log" with the "nosuid" option. Modify "/etc/fstab" to use the "nosuid" option on the "/var/log" directory. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /var/log

  286. RHEL-10-700185 CAT II V-281245 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/var/tmp" with the "nodev" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/var/tmp" is mounted with the "nodev" option: $ mount | grep /var/tmp /dev/mapper/luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2) If the "/var/tmp" file system is mounted without the "nodev" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/var/tmp" with the "nodev" option. Modify "/etc/fstab" to use the "nodev" option on the "/var/tmp" directory. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /var/tmp

  287. RHEL-10-700190 CAT II V-281246 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/var/tmp" with the "noexec" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/var/tmp" is mounted with the "noexec" option: $ mount | grep /var/tmp /dev/mapper/luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2) If the "/var/tmp" file system is mounted without the "noexec" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/var/tmp" with the "noexec" option. Modify "/etc/fstab" to use the "noexec" option on the "/var/tmp" directory. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /var/tmp

  288. RHEL-10-700195 CAT II V-281247 · SRG-OS-000368-GPOS-00154

    RHEL 10 must mount "/var/tmp" with the "nosuid" option.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that "/var/tmp" is mounted with the "nosuid" option: $ mount | grep /var/tmp /dev/mapper/luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2) If the "/var/tmp" file system is mounted without the "nosuid" option, this is a finding.

    Fix

    Configure RHEL 10 to mount "/var/tmp" with the "nosuid" option. Modify "/etc/fstab" to use the "nosuid" option on the "/var/tmp" directory. To reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command: $ sudo systemctl daemon-reload Use the following command to apply the changes immediately without a reboot: $ sudo mount -o remount /var/tmp

  289. RHEL-10-700200 CAT II V-281248 · SRG-OS-000368-GPOS-00154

    RHEL 10 must prevent special devices on nonroot local partitions.

    Maps to CM-7(2) via CCI-001764
    Check

    Verify RHEL 10 is configured so that all nonroot local partitions are mounted with the "nodev" option with the following command: $ sudo mount | grep '^/dev\S* on /\S' | grep --invert-match 'nodev' If any output is produced, this is a finding.

    Fix

    Configure RHEL 10 so that "/etc/fstab" uses the "nodev" option on all nonroot local partitions.

  290. RHEL-10-700400 CAT II V-281249 · SRG-OS-000445-GPOS-00199

    RHEL 10 must enable the SELinux targeted policy.

    Maps to SI-6 via CCI-002696
    Check

    Verify RHEL 10 SELINUX is using the targeted policy with the following command: $ sestatus | grep policy Loaded policy name: targeted If the loaded policy name is not "targeted", this is a finding.

    Fix

    Configure RHEL 10 to use the targeted SELINUX policy. Edit the file "/etc/selinux/config" and add or modify the following line: SELINUXTYPE=targeted A reboot is required for the changes to take effect.

  291. RHEL-10-700410 CAT II V-281250 · SRG-OS-000324-GPOS-00125

    RHEL 10 must elevate the SELinux context when an administrator calls the sudo command.

    Maps to AC-6(10) via CCI-002235
    Check

    Verify RHEL 10 elevates the SELinux context when an administrator calls the sudo command with the following command: This command must be run as root: $ sudo grep -r sysadm_r /etc/sudoers /etc/sudoers.d %{designated_group_or_user_name} ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL If a designated sudoers administrator group or account(s) is not configured to elevate the SELinux type and role to "sysadm_t" and "sysadm_r" with the use of the sudo command, this is a finding.

    Fix

    Configure RHEL 10 to elevate the SELinux context when an administrator calls the sudo command. Edit a file in the "/etc/sudoers.d" directory with the following command: $ sudo visudo -f /etc/sudoers.d/ Use the following example to build the file in the "/etc/sudoers.d" directory to allow any administrator belonging to a designated sudoers admin group to elevate their SELinux context with the use of the sudo command: %{designated_group_or_user_name} ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL Remove any configurations that conflict with the above from the following locations: /etc/sudoers /etc/sudoers.d/

  292. RHEL-10-700420 CAT II V-281251 · SRG-OS-000445-GPOS-00199

    RHEL 10 must use a Linux Security Module configured to enforce limits on system services.

    Maps to SC-3, SI-6 via CCI-002696, CCI-001084
    Check

    Verify RHEL 10 enforces correct operation of security functions through the use of SELinux with the following command: $ getenforce Enforcing If SELINUX is not set to "Enforcing", this is a finding. Verify SELinux is configured to be enforcing at boot. $ sudo grep "SELINUX=" /etc/selinux/config | grep -v '#' SELINUX=enforcing If an uncommented SELinux line is missing or not set to "enforcing", this is a finding.

    Fix

    Configure RHEL 10 to enforce correct operation of security functions. Edit the file "/etc/selinux/config" and add or modify the following line: SELINUX=enforcing A reboot is required for the changes to take effect.

  293. RHEL-10-700430 CAT II V-281252 · SRG-OS-000021-GPOS-00005

    RHEL 10 must configure SELinux context type to allow the use of a nondefault faillock tally directory.

    Maps to AC-7 via CCI-000044
    Check

    Note: If the system does not have SELinux enabled and enforcing a targeted policy, or if the pam_faillock module is not configured for use, this requirement is not applicable. Verify RHEL 10 SELinux context type allows the use of a nondefault faillock tally directory. Verify the location of the nondefault tally directory for the pam_faillock module with the following command: $ sudo grep -w dir /etc/security/faillock.conf dir = /var/log/faillock Check the security context type of the nondefault tally directory with the following command: $ ls -Zd /var/log/faillock unconfined_u:object_r:faillog_t:s0 /var/log/faillock If the security context type of the nondefault tally directory is not "faillog_t", this is a finding.

    Fix

    Configure RHEL 10 to allow the use of a nondefault faillock tally directory while SELinux enforces a targeted policy. Enable the feature using the following command: $ sudo authselect enable-feature with-faillock Create a nondefault faillock tally directory (if it does not already exist) with the following example: $ sudo mkdir /var/log/faillock Add/modify the "/etc/security/faillock.conf" file to match the following line: dir = /var/log/faillock Update "/etc/selinux/targeted/contexts/files/file_contexts.local" with "faillog_t" context type for the nondefault faillock tally directory with the following command: $ sudo semanage fcontext -a -t faillog_t "/var/log/faillock(/.*)?" Update the context type of the nondefault faillock directory/subdirectories and files with the following command: $ sudo restorecon -R -v /var/log/faillock

  294. RHEL-10-700500 CAT II V-281253 · SRG-OS-000445-GPOS-00199

    RHEL 10 must be configured so that Secure Shell (SSH) public host key files have mode "0644" or less permissive.

    Maps to SI-6 via CCI-002696
    Check

    Verify RHEL 10 SSH public host key files have a mode of "0644" or less permissive with the following command: Note: SSH public key files may be found in other directories on the system depending on the installation. $ sudo stat -c "%a %n" /etc/ssh/*.pub 644 /etc/ssh/ssh_host_dsa_key.pub 644 /etc/ssh/ssh_host_ecdsa_key.pub 644 /etc/ssh/ssh_host_ed25519_key.pub 644 /etc/ssh/ssh_host_rsa_key.pub If any "key.pub" file has a mode more permissive than "0644", this is a finding.

    Fix

    Configure RHEL 10 SSH public host key files to have mode "0644" or less permissive. Change the mode of public host key files under "/etc/ssh" to "0644" with the following command: $ sudo chmod 0644 /etc/ssh/*key.pub Restart the SSH daemon with the following command for the changes to take effect: $ sudo systemctl restart sshd.service

  295. RHEL-10-700510 CAT II V-281254 · SRG-OS-000364-GPOS-00151

    RHEL 10 must be configured so that the Secure Shell (SSH) daemon does not allow Generic Security Service Application Program Interface (GSSAPI) authentication.

    Maps to CM-5(1) via CCI-001813
    Check

    Verify RHEL 10 SSH daemons do not allow GSSAPI authentication with the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*gssapiauthentication' /etc/ssh/sshd_config.d/10-stig.conf:GSSAPIAuthentication no /etc/ssh/sshd_config.d/50-redhat.conf:GSSAPIAuthentication yes Verify the runtime setting with the following command: $ sudo sshd -T | grep -i gssapiauthentication gssapiauthentication no If the "GSSAPIAuthentication" keyword is not set to "no" in a drop-in that lexicographically precedes 50-redhat.conf, no output is returned, and the use of GSSAPI authentication has not been documented with the information system security officer, this is a finding.

    Fix

    Configure RHEL 10 SSH daemons to not allow GSSAPI authentication. In "/etc/ssh/sshd_config.d", create a drop file that will lexicographically precede 50-redhat.conf and add the following line: GSSAPIAuthentication no Restart the SSH service with the following command for the changes to take effect: $ sudo systemctl restart sshd.service

  296. RHEL-10-700520 CAT II V-281255 · SRG-OS-000364-GPOS-00151

    RHEL 10 must be configured so that the Secure Shell (SSH) daemon does not allow Kerberos authentication.

    Maps to CM-5(1) via CCI-001813
    Check

    Verify RHEL 10 SSH daemons do not allow Kerberos authentication with the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*kerberosauthentication' /etc/ssh/sshd_config.d/10-stig.conf:KerberosAuthentication no Verify the runtime setting with the following command: $ sudo sshd -T | grep -i kerberosauthentication kerberosauthentication no If the "KerberosAuthentication" keyword is not set to "no" in a drop-in that lexicographically precedes 50-redhat.conf, no output is returned, and the use of Kerberos authentication has not been documented with the information system security officer, this is a finding.

    Fix

    Configure RHEL 10 SSH daemons to not allow Kerberos authentication. In "/etc/ssh/sshd_config.d", create a drop file that will lexicographically precede 50-redhat.conf and add the following line: KerberosAuthentication no Restart the SSH service with the following command for the changes to take effect: $ sudo systemctl restart sshd.service

  297. RHEL-10-700530 CAT II V-281256 · SRG-OS-000445-GPOS-00199

    RHEL 10 must be configured so that the Secure Shell (SSH) daemon does not allow rhosts authentication.

    Maps to SI-6 via CCI-002696
    Check

    Verify RHEL 10 SSH daemons do not allow rhosts authentication with the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*ignorerhosts' /etc/ssh/sshd_config.d/10-stig.conf:IgnoreRhosts yes Verify the runtime setting with the following command: $ sudo sshd -T | grep -i ignorerhosts ignorerhosts yes If the "IgnoreRhosts" keyword is not set to "yes" in a drop-in that lexicographically precedes 50-redhat.conf, or if no output is returned, this is a finding.

    Fix

    Configure RHEL 10 SSH daemons to not allow rhosts authentication. In "/etc/ssh/sshd_config.d", create a drop file that will lexicographically precede 50-redhat.conf and add the following line: IgnoreRhosts yes Restart the SSH service with the following command for the changes to take effect: $ sudo systemctl restart sshd.service

  298. RHEL-10-700540 CAT II V-281257 · SRG-OS-000445-GPOS-00199

    RHEL 10 must be configured so that the Secure Shell (SSH) daemon does not allow known hosts authentication.

    Maps to SI-6 via CCI-002696
    Check

    Verify RHEL 10 SSH daemons do not allow known hosts authentication with the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*ignoreuserknownhosts' /etc/ssh/sshd_config.d/10-stig.conf:IgnoreUserKnownHosts yes Verify the runtime setting with the following command: $ sudo sshd -T | grep -i ignoreuserknownhosts ignoreuserknownhosts yes If the "IgnoreUserKnownHosts" keyword is not set to "yes" in a drop-in that lexicographically precedes 50-redhat.conf, or if no output is returned, this is a finding.

    Fix

    Configure RHEL 10 SSH daemons to not allow known hosts authentication. In "/etc/ssh/sshd_config.d", create a drop file that will lexicographically precede 50-redhat.conf and add the following line: IgnoreUserKnownHosts yes Restart the SSH service with the following command for the changes to take effect: $ sudo systemctl restart sshd.service

  299. RHEL-10-700550 CAT II V-281258 · SRG-OS-000445-GPOS-00199

    RHEL 10 must be configured so that the Secure Shell (SSH) daemon disables remote X connections for interactive users.

    Maps to SI-6 via CCI-002696
    Check

    Verify RHEL 10 SSH daemons do not allow X11Forwarding with the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*x11forwarding' /etc/ssh/sshd_config.d/10-stig.conf:X11forwarding no /etc/ssh/sshd_config.d/50-redhat.conf:X11Forwarding yes Verify the runtime setting with the following command: $ sudo sshd -T | grep -i x11forwarding x11forwarding no If the "X11forwarding" keyword is not set to "no" in a drop-in that lexicographically precedes 50-redhat.conf, or if no output is returned, and X11 forwarding is not documented with the information system security officer as an operational requirement, this is a finding.

    Fix

    Configure RHEL 10 SSH daemons to not allow X11 forwarding. In "/etc/ssh/sshd_config.d", create a drop file that will lexicographically precede 50-redhat.conf and add the following line: X11forwarding no Restart the SSH service with the following command for the changes to take effect: $ sudo systemctl restart sshd.service

  300. RHEL-10-700560 CAT II V-281259 · SRG-OS-000445-GPOS-00199

    RHEL 10 must be configured so that the Secure Shell (SSH) daemon performs strict mode checking of home directory configuration files.

    Maps to SI-6 via CCI-002696
    Check

    Verify RHEL 10 SSH daemons perform strict mode checking of home directory configuration files with the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*strictmodes' /etc/ssh/sshd_config.d/10-stig.conf:StrictModes yes Verify the runtime setting with the following command: $ sudo sshd -T | grep -i strictmodes strictmodes yes If the "StrictModes" keyword is not set to "yes" in a drop-in that lexicographically precedes 50-redhat.conf, or if no output is returned, this is a finding.

    Fix

    Configure RHEL 10 SSH daemons to perform strict mode checking of home directory configuration files. In "/etc/ssh/sshd_config.d", create a drop file that will lexicographically precede 50-redhat.conf and add the following line: StrictModes yes Restart the SSH service with the following command for the changes to take effect: $ sudo systemctl restart sshd.service

  301. RHEL-10-700570 CAT II V-281260 · SRG-OS-000445-GPOS-00199

    RHEL 10 must be configured so that the Secure Shell (SSH) daemon displays the date and time of the last successful account login upon an SSH login.

    Maps to SI-6 via CCI-002696
    Check

    Verify RHEL 10 SSH daemons provide users with feedback on when account accesses last occurred with the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*printlastlog' /etc/ssh/sshd_config.d/10-stig.conf:PrintLastLog yes Verify the runtime setting with the following command: $ sudo sshd -T | grep -i printlastlog printlastlog yes If the "PrintLastLog" keyword is not set to "yes" in a drop-in that lexicographically precedes 50-redhat.conf, or if no output is returned, this is a finding.

    Fix

    Configure RHEL 10 SSH daemons to provide users with feedback on when account accesses last occurred. In "/etc/ssh/sshd_config.d", create a drop file that will lexicographically precede 50-redhat.conf and add the following line: PrintLastLog yes Restart the SSH service with the following command for the changes to take effect: $ sudo systemctl restart sshd.service

  302. RHEL-10-700580 CAT II V-281261 · SRG-OS-000445-GPOS-00199

    RHEL 10 must be configured so that the Secure Shell (SSH) daemon prevents remote hosts from connecting to the proxy display.

    Maps to SI-6 via CCI-002696
    Check

    Verify RHEL 10 SSH daemons prevent remote hosts from connecting to the proxy display with the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*x11uselocalhost' /etc/ssh/sshd_config.d/10-stig.conf:X11UseLocalhost yes Verify the runtime setting with the following command: $ sudo sshd -T | grep -i x11uselocalhost x11uselocalhost yes If the "X11UseLocalhost" keyword is not set to "yes" in a drop-in that lexicographically precedes 50-redhat.conf, or if no output is returned, this is a finding.

    Fix

    Configure RHEL 10 SSH daemons to prevent remote hosts from connecting to the proxy display. In "/etc/ssh/sshd_config.d", create a drop file that will lexicographically precede 50-redhat.conf and add the following line: X11UseLocalhost yes Restart the SSH service with the following command for the changes to take effect: $ sudo systemctl restart sshd.service

  303. RHEL-10-700590 CAT II V-281262 · SRG-OS-000080-GPOS-00048

    RHEL 10 must be configured so that Secure Shell (SSH) server configuration files' permissions are not modified.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 is configured so that SSH server configuration files' permissions are not modified. Check the permissions of the "/etc/ssh/sshd_config" file with the following command: $ sudo rpm --verify openssh-server | awk '! ($2 == "c" && $1 ~ /^.\..\.\.\.\..\./) {print $0}' If the command returns any output, this is a finding.

    Fix

    Configure RHEL 10 so that SSH server configuration files' permissions are not modified. Run the following commands to restore the correct permissions of OpenSSH server configuration files: $ sudo rpm --setugids openssh-server $ sudo rpm --setperms openssh-server

  304. RHEL-10-700600 CAT II V-281263 · SRG-OS-000105-GPOS-00052

    RHEL 10 must be configured so that SSHD accepts public key authentication.

    Maps to IA-2(1), IA-2(2) via CCI-000765, CCI-000766
    Check

    Note: If the system administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable. Verify RHEL 10 SSH daemons accept public key encryption with the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*pubkeyauthentication' /etc/ssh/sshd_config.d/10-stig.conf:PubkeyAuthentication yes Verify the runtime setting with the following command: $ sudo sshd -T | grep -i pubkeyauthentication pubkeyauthentication yes If the "PubkeyAuthentication" keyword is not set to "yes" in a drop-in that lexicographically precedes 50-redhat.conf, or if no output is returned, this is a finding.

    Fix

    Configure RHEL 10 to accept public key authentication. In "/etc/ssh/sshd_config.d", create a drop file that will lexicographically precede 50-redhat.conf and add the following line: PubkeyAuthentication yes Restart the SSH daemon with the following command for the settings to take effect: $ sudo systemctl restart sshd.service

  305. RHEL-10-700610 CAT II V-281264 · SRG-OS-000106-GPOS-00053

    RHEL 10 must be configured so that SSHD does not allow blank passwords.

    Maps to IA-2(2) via CCI-000766
    Check

    Verify RHEL 10 remote access using SSH prevents logging on with a blank password with the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*permitemptypasswords' /etc/ssh/sshd_config.d/10-stig.conf:PermitEmptyPasswords no Verify the runtime setting with the following command: $ sudo sshd -T | grep -i permitemptypasswords permitemptypasswords no If the "PermitEmptyPasswords" keyword is not set to "no" in a drop-in that lexicographically precedes 50-redhat.conf, or if no output is returned, this is a finding.

    Fix

    Configure RHEL 10 to prevent SSH users from logging on with blank passwords. In "/etc/ssh/sshd_config.d", create a drop file that will lexicographically precede 50-redhat.conf and add the following line: PermitEmptyPasswords no Restart the SSH daemon with the following command for the settings to take effect: $ sudo systemctl restart sshd.service

  306. RHEL-10-700620 CAT II V-281265 · SRG-OS-000109-GPOS-00056

    RHEL 10 must not permit direct logins to the root account using remote access via Secure Shell (SSH).

    Maps to IA-2(5) via CCI-004045
    Check

    Verify RHEL 10 remote access using SSH prevents users from logging on directly as "root" with the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*permitrootlogin' /etc/ssh/sshd_config.d/10-stig.conf:PermitRootLogin no Verify the runtime setting with the following command: $ sudo sshd -T | grep -i permitrootlogin permitrootlogin no If the "PermitRootLogin" keyword is not set to "no" in a drop-in that lexicographically precedes 50-redhat.conf, or if no output is returned, this is a finding.

    Fix

    Configure RHEL 10 to prevent SSH users from logging on directly as root. In "/etc/ssh/sshd_config.d", create a drop-in file that will lexicographically precede 50-redhat.conf and add the following line: PermitRootLogin no Restart the SSH daemon with the following command for the settings to take effect: $ sudo systemctl restart sshd.service

  307. RHEL-10-700630 CAT II V-281266 · SRG-OS-000080-GPOS-00048

    RHEL 10 must not allow a noncertificate trusted host Secure Shell (SSH) login to the system.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 does not allow a noncertificate trusted host SSH login to the system with the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*hostbasedauthentication' /etc/ssh/sshd_config.d/10-stig.conf:HostbasedAuthentication no Verify the runtime setting with the following command: $ sudo sshd -T | grep -i hostbasedauthentication hostbasedauthentication no If the "HostbasedAuthentication" keyword is not set to "no" in a drop-in that lexicographically precedes 50-redhat.conf, or no output is returned, this is a finding.

    Fix

    Configure RHEL 10 to not allow a noncertificate trusted host SSH login to the system. In "/etc/ssh/sshd_config.d", create a drop file that will lexicographically precede 50-redhat.conf and add the following line: HostbasedAuthentication no Restart the SSH daemon with the following command for the settings to take effect: $ sudo systemctl restart sshd.service

  308. RHEL-10-700660 CAT II V-281269 · SRG-OS-000163-GPOS-00072

    RHEL 10 must be configured so that all network connections associated with Secure Shell (SSH) traffic terminate after becoming unresponsive.

    Maps to AC-12, SC-10 via CCI-001133, CCI-002361
    Check

    Verify RHEL 10 network connections associated with SSH traffic terminate after becoming unresponsive. Set the "ClientAliveCountMax" to "1" by performing the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*clientalivecountmax' /etc/ssh/sshd_config.d/10-stig.conf:ClientAliveCountMax 1 Verify the runtime setting with the following command: $ sudo sshd -T | grep -i clientalivecountmax clientalivecountmax 1 If the "ClientAliveCountMax" keyword is not set to a value of "1" in a drop-in that lexicographically precedes 50-redhat.conf, or if no output is returned, this is a finding.

    Fix

    Configure RHEL 10 to automatically terminate all network connections associated with SSH traffic at the end of a session or after 10 minutes of inactivity. In "/etc/ssh/sshd_config.d", create a drop file that will lexicographically precede 50-redhat.conf and add the following line: ClientAliveCountMax 1 Restart the SSH daemon with the following command for the changes to take effect: $ sudo systemctl restart sshd.service

  309. RHEL-10-700670 CAT II V-281270 · SRG-OS-000046-GPOS-00022

    RHEL 10 must forward mail from postmaster to the root account using a postfix alias.

    Maps to AU-5 via CCI-000139
    Check

    Verify RHEL 10 notifies administrators in the event of an audit processing failure. Check that the "/etc/aliases" file has a defined value for "root". $ sudo grep "postmaster:\s*root$" /etc/aliases postmaster: root If the command does not return a line, or the line is commented out, ask the system administrator to indicate how they and the information systems security officer are notified of an audit process failure. If there is no evidence of the proper personnel being notified of an audit processing failure, this is a finding.

    Fix

    Configure RHEL 10 to have a valid email address as an alias for the root account. Append the following line to "/etc/aliases": postmaster: root Run the following command: $ sudo newaliases

  310. RHEL-10-700680 CAT II V-281271 · SRG-OS-000080-GPOS-00048

    RHEL 10 must not have a "shosts.equiv" file on the system.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 does not have a "shosts.equiv" file on the system with the following command: $ sudo find / -name shosts.equiv If a "shosts.equiv" file is found, this is a finding.

    Fix

    Configure RHEL 10 to not have a "shosts.equiv" file on the system. Remove any found "shosts.equiv" files from the system: $ sudo rm /[path]/[to]/[file]/shosts.equiv

  311. RHEL-10-700690 CAT II V-281272 · SRG-OS-000080-GPOS-00048

    RHEL 10 must not have any ".shosts" files on the system.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 does not have any ".shosts" files on the system with the following command: $ sudo find / -name .shosts If a ".shosts" file is found, this is a finding.

    Fix

    Configure RHEL 10 to not have any ".shosts" files on the system. Remove any found ".shosts" files from the system with the following command: $ sudo rm /[path]/[to]/[file]/.shosts

  312. RHEL-10-700700 CAT II V-281273 · SRG-OS-000114-GPOS-00059

    RHEL 10 must prevent a user from overriding the disabling of the graphical user interface automount function.

    Maps to IA-3 via CCI-000778, CCI-001958
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 disables the ability of the user to override the graphical user interface automount setting. Determine which profile the system database is using with the following command: $ sudo grep system-db /etc/dconf/profile/user system-db:local Check that the automount setting is locked from nonprivileged user modification with the following command: Note: The example below is using the database "local" for the system, so the path is "/etc/dconf/db/local.d". This path must be modified if a database other than "local" is being used. $ sudo grep 'automount-open' /etc/dconf/db/local.d/locks/* /org/gnome/desktop/media-handling/automount-open If the command does not return at least the example result, this is a finding.

    Fix

    Configure RHEL 10 so that the GNOME desktop does not allow a user to change the setting that disables automated mounting of removable media. Note: The example below is using the database "local" for the system. If the system is using another database in "/etc/dconf/profile/user", the file should be created under the appropriate subdirectory. Update the "/etc/dconf/db/local.d/locks/00-security-settings-lock" file to prevent user modification: $ sudo vi /etc/dconf/db/local.d/locks/00-security-settings-lock /org/gnome/desktop/media-handling/automount-open Update the dconf system databases: $ sudo dconf update

  313. RHEL-10-700710 CAT II V-281274 · SRG-OS-000114-GPOS-00059

    RHEL 10 must prevent a user from overriding the disabling of the graphical user interface autorun function.

    Maps to IA-3 via CCI-000778, CCI-001958
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 disables ability of the user to override the graphical user interface autorun setting. Check that the autorun setting is set to prevent user modification with the following command: $ gsettings writable org.gnome.desktop.media-handling autorun-never false If "autorun-never" is writable, the result is "true". If this is not documented with the information system security officer as an operational requirement, this is a finding.

    Fix

    Configure RHEL 10 so that the GNOME desktop does not allow a user to change the setting that disables autorun on removable media. Note: The example below is using the database "local" for the system. If the system is using another database in "/etc/dconf/profile/user", the file should be created under the appropriate subdirectory. Update the "/etc/dconf/db/local.d/locks/00-security-settings-lock" file to prevent user modification: $ sudo vi /etc/dconf/db/local.d/locks/00-security-settings-lock /org/gnome/desktop/media-handling/autorun-never Update the dconf system databases: $ sudo dconf update

  314. RHEL-10-700730 CAT II V-281276 · SRG-OS-000028-GPOS-00009

    RHEL 10 must prevent a user from overriding the disabling of the graphical user smart card removal action.

    Maps to AC-11 via CCI-000056, CCI-000057
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 disables ability of the user to override the smart card removal action setting with the following command: $ gsettings writable org.gnome.settings-daemon.peripherals.smartcard removal-action false If "removal-action" is writable and the result is "true", this is a finding.

    Fix

    Configure RHEL 10 to prevent a user from overriding the disabling of the graphical user smart card removal action. Add the following line to "/etc/dconf/db/local.d/locks/00-security-settings-lock" to prevent user override of the smart card removal action: /org/gnome/settings-daemon/peripherals/smartcard/removal-action Update the dconf system databases: $ sudo dconf update

  315. RHEL-10-700740 CAT II V-281277 · SRG-OS-000028-GPOS-00009

    RHEL 10 must prevent a user from overriding the screensaver lock-enabled setting for the graphical user interface.

    Maps to AC-11 via CCI-000056, CCI-000057
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, Gnome Shell. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 prevents a user from overriding the screensaver lock-enabled setting with the following command: $ gsettings writable org.gnome.desktop.screensaver lock-enabled false If "lock-enabled" is writable, and the result is "true", this is a finding.

    Fix

    Configure RHEL 10 to prevent a user from overriding settings for graphical user interfaces. Create a database to contain the systemwide screensaver settings (if it does not already exist) with the following command: Note: The example below is using the database "local" for the system. If the system is using another database in "/etc/dconf/profile/user", the file should be created under the appropriate subdirectory. Update the "/etc/dconf/db/local.d/locks/session" file to prevent nonprivileged users from modifying the screensaver lock: $ sudo vi /etc/dconf/db/local.d/locks/session /org/gnome/desktop/screensaver/lock-enabled Run the following command to update the database: $ sudo dconf update

  316. RHEL-10-700750 CAT II V-281278 · SRG-OS-000029-GPOS-00010

    RHEL 10 must automatically lock graphical user sessions after 10 minutes of inactivity.

    Maps to AC-11, AC-11(1) via CCI-000057, CCI-000060
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 initiates a session lock after a 10-minute period of inactivity for graphical user interfaces with the following command: $ sudo gsettings get org.gnome.desktop.session idle-delay uint32 600 If "idle-delay" is set to "0" or a value greater than "600", this is a finding.

    Fix

    Configure RHEL 10 to initiate a screensaver after a 10-minute period of inactivity for graphical user interfaces. Note: The example below is using the database "local" for the system. If the system is using another database in "/etc/dconf/profile/user", the file should be created under the appropriate subdirectory. Update the "/etc/dconf/db/local.d/00-screensaver" file to prevent nonprivileged users from modifying the screensaver idle-delay setting: $ sudo vi /etc/dconf/db/local.d/00-screensaver [org/gnome/desktop/session] # Set the lock time out to 900 seconds before the session is considered idle idle-delay=uint32 600 Update the system databases: $ sudo dconf update

  317. RHEL-10-700760 CAT II V-281279 · SRG-OS-000029-GPOS-00010

    RHEL 10 must prevent a user from overriding the session idle-delay setting for the graphical user interface.

    Maps to AC-11, AC-11(1) via CCI-000057, CCI-000060
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 prevents a user from overriding settings for session idle delay with the following command: $ gsettings writable org.gnome.desktop.session idle-delay false If "idle-delay" is writable, and the result is "true", this is a finding.

    Fix

    Configure RHEL 10 to prevent a user from overriding settings for graphical user interfaces. Note: The example below is using the database "local" for the system. If the system is using another database in "/etc/dconf/profile/user", the file should be created under the appropriate subdirectory. Update the "/etc/dconf/db/local.d/locks/session" file to prevent nonprivileged users from modifying the idle-delay lock: $ sudo vi /etc/dconf/db/local.d/locks/session /org/gnome/desktop/session/idle-delay Run the following command to update the database: $ sudo dconf update

  318. RHEL-10-700770 CAT II V-281280 · SRG-OS-000029-GPOS-00010

    RHEL 10 must initiate a session lock for graphical user interfaces when the screensaver is activated.

    Maps to AC-11, AC-11(1) via CCI-000057, CCI-000060
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 initiates a session lock for graphical user interfaces when the screensaver is activated with the following command: $ gsettings get org.gnome.desktop.screensaver lock-delay uint32 5 If the "uint32" setting is not set to "5" or less, or is missing, this is a finding.

    Fix

    Configure RHEL 10 to initiate a session lock for graphical user interfaces when a screensaver is activated. Note: The example below is using the database "local" for the system. If the system is using another database in "/etc/dconf/profile/user", the file should be created under the appropriate subdirectory. Create a database to contain the systemwide screensaver settings (if it does not already exist) with the following command: $ sudo vi /etc/dconf/db/local.d/00-screensaver [org/gnome/desktop/screensaver] lock-delay=uint32 5 The "uint32" must be included along with the integer key values as shown. Update the system databases: $ sudo dconf update

  319. RHEL-10-700780 CAT II V-281281 · SRG-OS-000029-GPOS-00010

    RHEL 10 must prevent a user from overriding the session lock-delay setting for the graphical user interface.

    Maps to AC-11, AC-11(1) via CCI-000057, CCI-000060
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 prevents a user from overriding settings for the screensaver lock delay with the following command: $ gsettings writable org.gnome.desktop.screensaver lock-delay false If "lock-delay" is writable, and the result is "true", this is a finding.

    Fix

    Configure RHEL 10 to prevent a user from overriding settings for graphical user interfaces. Note: The example below is using the database "local" for the system. If the system is using another database in "/etc/dconf/profile/user", the file should be created under the appropriate subdirectory. Update the "/etc/dconf/db/local.d/locks/session" file to prevent nonprivileged users from modifying the lock-delay setting: $ sudo vi /etc/dconf/db/local.d/locks/session /org/gnome/desktop/screensaver/lock-delay Run the following command to update the database: $ sudo dconf update

  320. RHEL-10-700790 CAT II V-281282 · SRG-OS-000031-GPOS-00012

    RHEL 10 must conceal, via the session lock, information previously visible on the display with a publicly viewable image.

    Maps to AC-11(1) via CCI-000060
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 prevents a user from overriding settings a blank screensaver with the following command: $ gsettings writable org.gnome.desktop.screensaver picture-uri false If "picture-uri" is writable, and the result is "true", this is a finding.

    Fix

    Configure RHEL 10 to prevent a user from overriding the picture-uri setting for graphical user interfaces. Note: The example below is using the database "local" for the system. If the system is using another database in "/etc/dconf/profile/user", the file should be created under the appropriate subdirectory. Update the "/etc/dconf/db/local.d/00-security-settings" file to prevent a user from overriding the "picture-uri" setting: $ sudo vi /etc/dconf/db/local.d/00-security-settings [org/gnome/desktop/screensaver] picture-uri='' Update the "/etc/dconf/db/local.d/locks/00-security-settings-lock" file to prevent a user from modifying the lock applied to the "picture-uri" setting: $ sudo vi /etc/dconf/db/local.d/locks/00-security-settings-lock /org/gnome/desktop/screensaver/picture-uri Update the dconf system databases: $ sudo dconf update

  321. RHEL-10-700800 CAT II V-281283 · SRG-OS-000080-GPOS-00048

    RHEL 10 must ensure effective dconf policy matches the policy keyfiles.

    Maps to AC-3 via CCI-000213
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 ensures effective dconf policy matches the policy keyfiles. Check the last modification time of the local databases, comparing it to the last modification time of the related keyfiles. The following command will check every dconf database and compare its modification time to the related system keyfiles: $ function dconf_needs_update { for db in $(find /etc/dconf/db -maxdepth 1 -type f); do db_mtime=$(stat -c %Y "$db"); keyfile_mtime=$(stat -c %Y "$db".d/* | sort -n | tail -1); if [ -n "$db_mtime" ] && [ -n "$keyfile_mtime" ] && [ "$db_mtime" -lt "$keyfile_mtime" ]; then echo "$db needs update"; return 1; fi; done; }; dconf_needs_update If the command has any output, then a dconf database needs to be updated, and this is a finding.

    Fix

    Configure RHEL 10 to ensure that the effective dconf policy matches the policy keyfiles. Update the dconf databases by running the following command: $ sudo dconf update

  322. RHEL-10-700810 CAT II V-281284 · SRG-OS-000445-GPOS-00199

    RHEL 10 must prevent a user from overriding the disable-restart-buttons setting for the graphical user interface.

    Maps to SI-6 via CCI-002696
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 prevents a user from overriding the disable-restart-buttons setting for graphical user interfaces: $ gsettings writable org.gnome.login-screen disable-restart-buttons false If "disable-restart-buttons" is writable, and the result is "true", this is a finding.

    Fix

    Configure RHEL 10 to prevent a user from overriding the disable-restart-buttons setting for graphical user interfaces. Note: The example below is using the database "local" for the system. If the system is using another database in "/etc/dconf/profile/user", the file should be created under the appropriate subdirectory. Update the "/etc/dconf/db/local.d/locks/session" file to prevent nonprivileged users from modifying the disable-restart-buttons setting: $ sudo vi /etc/dconf/db/local.d/locks/session /org/gnome/login-screen/disable-restart-buttons Run the following command to update the database: $ sudo dconf update

  323. RHEL-10-700820 CAT II V-281285 · SRG-OS-000420-GPOS-00186

    RHEL 10 must prevent a user from overriding the Ctrl-Alt-Del sequence settings for the graphical user interface.

    Maps to SC-5 via CCI-002385
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 users cannot enable the Ctrl-Alt-Del sequence in the GNOME desktop: $ gsettings writable org.gnome.settings-daemon.plugins.media-keys logout false If "logout" is writable and the result is "true", this is a finding. If GNOME is configured to shut down when Ctrl-Alt-Del is pressed, this is a finding.

    Fix

    Configure RHEL 10 to disallow the user changing the Ctrl-Alt-Del sequence in the GNOME desktop. Note: The example below is using the database "local" for the system. If the system is using another database in "/etc/dconf/profile/user", the file should be created under the appropriate subdirectory. Update the "/etc/dconf/db/local.d/locks/session" file to prevent nonprivileged users from modifying the Ctrl-Alt-Del setting: $ sudo vi /etc/dconf/db/local.d/locks/session /org/gnome/settings-daemon/plugins/media-keys/logout Run the following command to update the database: $ sudo dconf update

  324. RHEL-10-700830 CAT II V-281286 · SRG-OS-000420-GPOS-00186

    RHEL 10 must disable the ability of a user to accidentally press Ctrl-Alt-Del and cause a system to shut down or reboot.

    Maps to SC-5 via CCI-002385
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 is configured to ignore the Ctrl-Alt-Del sequence in the GNOME desktop with the following command: Check that the Ctrl-Alt-Del sequence settings for the graphical user interface cannot be overridden with the following command: $ gsettings get org.gnome.settings-daemon.plugins.media-keys logout @as [] If the GNOME desktop is configured to shut down when Ctrl-Alt-Del is pressed, this is a finding.

    Fix

    Configure RHEL 10 to ignore the Ctrl-Alt-Del sequence in the GNOME desktop. Note: The example below is using the database "local" for the system. If the system is using another database in "/etc/dconf/profile/user", the file should be created under the appropriate subdirectory. Update the "/etc/dconf/db/local.d/00-media-keys" file to set the media-keys logout setting as an empty string array: $ sudo vi /etc/dconf/db/local.d/00-media-keys [org/gnome/settings-daemon/plugins/media-keys] logout=@as [] Run the following command to update the database: $ sudo dconf update

  325. RHEL-10-700840 CAT II V-281287 · SRG-OS-000095-GPOS-00049

    RHEL 10 must disable the user list at login for graphical user interfaces.

    Maps to CM-7 via CCI-000381
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 disables the user login list for graphical user interfaces with the following command: $ gsettings get org.gnome.login-screen disable-user-list true If the setting is "false", this is a finding.

    Fix

    Configure RHEL 10 to disable the user list at login for graphical user interfaces. Note: The example below is using the database "local" for the system. If the system is using another database in "/etc/dconf/profile/user", the file should be created under the appropriate subdirectory. Create a database to contain the systemwide screensaver settings (if it does not already exist) with the following command: $ sudo vi /etc/dconf/db/local.d/02-login-screen [org/gnome/login-screen] disable-user-list=true Update the system databases: $ sudo dconf update

  326. RHEL-10-700850 CAT II V-281288 · SRG-OS-000114-GPOS-00059

    RHEL 10 must be configured to disable USB mass storage.

    Maps to IA-3 via CCI-000778, CCI-001958
    Check

    Verify RHEL 10 disables the ability to load the USB Storage kernel module with the following command: $ sudo grep -rs usb-storage /etc/modprobe.conf /etc/modprobe.d/* /etc/modprobe.d/usb-storage.conf:install usb-storage /bin/false /etc/modprobe.d/usb-storage.conf:blacklist usb-storage If the command does not return any output, or either line is commented out, and use of USB Storage is not documented with the information system security officer as an operational requirement, this is a finding.

    Fix

    Configure RHEL 10 to prevent the usb-storage kernel module from being loaded. Add the following lines to the file "/etc/modprobe.d/usb-storage.conf" (or create "usb-storage.conf" if it does not exist): $ sudo vi /etc/modprobe.d/usb-storage.conf install usb-storage /bin/false blacklist usb-storage

  327. RHEL-10-700860 CAT II V-281289 · SRG-OS-000095-GPOS-00049

    RHEL 10 must disable Bluetooth.

    Maps to AC-18(1), CM-7 via CCI-000381, CCI-001443
    Check

    Verify RHEL 10 disables the ability to load the Bluetooth kernel module with the following command: $ sudo grep -rs bluetooth /etc/modprobe.conf /etc/modprobe.d/* /etc/modprobe.d/bluetooth.conf:install bluetooth /bin/false /etc/modprobe.d/bluetooth.conf:blacklist bluetooth If the command does not return any output, or the lines are commented out, and use of Bluetooth is not documented with the information system security officer as an operational requirement, this is a finding.

    Fix

    Configure RHEL 10 to disable the Bluetooth adapter when not in use. Add the following lines to the file "/etc/modprobe.d/bluetooth.conf" (or create "bluetooth.conf" if it does not exist): $ sudo vi /etc/modprobe.d/bluetooth.conf install bluetooth /bin/false blacklist bluetooth Reboot the system for the settings to take effect.

  328. RHEL-10-700870 CAT II V-281290 · SRG-OS-000299-GPOS-00117

    RHEL 10 must disable wireless network adapters.

    Maps to AC-18(1), SC-8, SC-8(1) via CCI-001444, CCI-001443, CCI-002421, CCI-002418
    Check

    Note: This requirement is not applicable for systems that do not have physical wireless network radios. Verify RHEL 10 disables wireless interfaces on the system with the following command: $ nmcli device status DEVICE TYPE STATE CONNECTION virbr0 bridge connected virbr0 wlp7s0 wifi connected wifiSSID enp6s0 ethernet disconnected -- p2p-dev-wlp7s0 wifi-p2p disconnected -- lo loopback unmanaged -- virbr0-nic tun unmanaged -- If a wireless interface is configured and has not been documented and approved by the information system security officer, this is a finding.

    Fix

    Configure RHEL 10 to disable all wireless network interfaces with the following command: $ nmcli radio all off

  329. RHEL-10-700880 CAT II V-281291 · SRG-OS-000114-GPOS-00059

    RHEL 10 must disable the graphical user interface automounter unless required.

    Maps to IA-3 via CCI-000778, CCI-001958
    Check

    Note: This requirement assumes the use of the RHEL 10 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is not applicable. Verify RHEL 10 disables the graphical user interface automount function. Disable the setting with the following command: $ gsettings get org.gnome.desktop.media-handling automount-open false If "automount-open" is set to "true" and is not documented with the information system security officer as an operational requirement, this is a finding.

    Fix

    Configure RHEL 10 GNOME to disable automated mount of removable media. Note: The example below is using the database "local" for the system. If the system is using another database in "/etc/dconf/profile/user", the file should be created under the appropriate subdirectory. Update the "/etc/dconf/db/local.d/00-security-settings" database file with the following lines: $ sudo vi /etc/dconf/db/local.d/00-security-settings [org/gnome/desktop/media-handling] automount-open=false Update the dconf system databases: $ sudo dconf update

  330. RHEL-10-700900 CAT II V-281293 · SRG-OS-000433-GPOS-00192

    RHEL 10 must implement nonexecutable data to protect its memory from unauthorized code execution.

    Maps to SI-16 via CCI-002824
    Check

    Verify RHEL 10 implements nonexecutable data to protect its memory from unauthorized code execution. Run the following command: $ sudo grep ^flags /proc/cpuinfo | grep -Ev '([^[:alnum:]])(nx)([^[:alnum:]]|$)' If any output is returned, this is a finding. Run the following command: $ sudo grubby --info=ALL | grep args | grep -E '([^[:alnum:]])(noexec)([^[:alnum:]])' If any output is returned, this is a finding.

    Fix

    Configure RHEL 10 to implement nonexecutable data to protect its memory from unauthorized code execution. Update the GRUB 2 bootloader configuration. Run the following command: $ sudo grubby --update-kernel=ALL --remove-args=noexec

  331. RHEL-10-700920 CAT II V-281295 · SRG-OS-000163-GPOS-00072

    RHEL 10 must automatically exit interactive command shell user sessions after 10 minutes of inactivity.

    Maps to SC-10 via CCI-001133
    Check

    Verify RHEL 10 is configured to exit interactive command shell user sessions after 10 minutes of inactivity or less with the following command: $ sudo grep -i tmout /etc/profile /etc/profile.d/*.sh /etc/profile.d/tmout.sh:declare -xr TMOUT=600 If "TMOUT" is not set to "600" or less in a script located in the "/etc/'profile.d/" directory, is missing, or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to exit interactive command shell user sessions after 10 minutes of inactivity. Add or edit the following line in "/etc/profile.d/tmout.sh": #!/bin/bash declare -xr TMOUT=600

  332. RHEL-10-700930 CAT II V-281296 · SRG-OS-000163-GPOS-00072

    RHEL 10 must be configured with a timeout interval for the Secure Shell (SSH) daemon.

    Maps to AC-12, MA-4(7), SC-10 via CCI-001133, CCI-002361, CCI-002891
    Check

    Verify RHEL 10 is configured with an SSH timeout interval. Verify the "ClientAliveInterval" variable is set to a value of "600" or less by performing the following command: $ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\r' | tr '\n' ' ' | xargs sudo grep -iH '^\s*clientaliveinterval' /etc/ssh/sshd_config.d/10-stig.conf::ClientAliveInterval 600 Verify the runtime setting with the following command: $ sudo sshd -T | grep -i clientaliveinterval clientaliveinterval 600 If the "ClientAliveInterval" keyword is not set to a value of "600" or less in a drop-in that lexicographically precedes 50-redhat.conf, or if no output is returned, this is a finding.

    Fix

    Configure RHEL 10 to automatically terminate all network connections associated with SSH traffic at the end of a session or after 10 minutes of inactivity. Note: This setting must be applied in conjunction with RHEL-10-700660 to function correctly. In "/etc/ssh/sshd_config.d", create a drop file that will lexicographically precede 50-redhat.conf and add the following line: ClientAliveInterval 600 Restart the SSH daemon with the following command for the changes to take effect: $ sudo systemctl restart sshd.service

  333. RHEL-10-700940 CAT II V-281297 · SRG-OS-000095-GPOS-00049

    RHEL 10 must not default to the graphical display manager unless approved.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 is configured to boot to the command line with the following command: $ systemctl get-default multi-user.target If the system default target is not set to "multi-user.target", and the information system security officer lacks a documented requirement for a graphical user interface, this is a finding.

    Fix

    Configure RHEL 10 to boot to the command line by setting the default target to "multi-user" with the following command: $ sudo systemctl set-default multi-user.target

  334. RHEL-10-700970 CAT II V-280094 · SRG-OS-000324-GPOS-00125

    RHEL 10 must disable the debug-shell systemd service.

    Maps to AC-6(10) via CCI-002235
    Check

    Verify RHEL 10 is configured to mask the debug-shell systemd service with the following command: $ sudo systemctl status debug-shell.service o debug-shell.service Loaded: masked (Reason: Unit debug-shell.service is masked.) Active: inactive (dead) If the "debug-shell.service" is loaded and not masked, this is a finding.

    Fix

    Configure RHEL 10 to mask the debug-shell systemd service with the following command: $ sudo systemctl disable --now debug-shell.service $ sudo systemctl mask --now debug-shell.service

  335. RHEL-10-700980 CAT II V-281300 · SRG-OS-000095-GPOS-00049

    RHEL 10 must disable the ability of systemd to spawn an interactive boot process.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 is configured so that the current GRUB 2 configuration disables the ability of systemd to spawn an interactive boot process with the following command: $ sudo grubby --info=ALL | grep args | grep 'systemd.confirm_spawn' If any output is returned, this is a finding.

    Fix

    Configure RHEL 10 so that the current GRUB 2 configuration disables the ability of systemd to spawn an interactive boot process with the following command: $ sudo grubby --update-kernel=ALL --remove-args="systemd.confirm_spawn"

  336. RHEL-10-700990 CAT II V-281301 · SRG-OS-000134-GPOS-00068

    RHEL 10 must disable virtual system calls.

    Maps to SC-3 via CCI-001084
    Check

    Verify RHEL 10 is configured so that the current GRUB 2 configuration disables virtual system calls with the following command: $ sudo grubby --info=ALL | grep args | grep -v 'vsyscall=none' If any output is returned, this is a finding. Check that virtual system calls are disabled by default to persist in kernel updates with the following command: $ sudo grep vsyscall /etc/default/grub GRUB_CMDLINE_LINUX="vsyscall=none" If "vsyscall" is not set to "none", is missing or commented out, and is not documented with the information system security officer as an operational requirement, this is a finding.

    Fix

    Configure RHEL 10 to disable virtual system calls with the following command: $ sudo grubby --update-kernel=ALL --args="vsyscall=none"

  337. RHEL-10-701000 CAT II V-281302 · SRG-OS-000134-GPOS-00068

    RHEL 10 must clear the page allocator to prevent use-after-free attacks.

    Maps to SC-3 via CCI-001084
    Check

    Verify RHEL 10 is configured so that the current GRUB 2 configuration enables page poisoning to mitigate use-after-free vulnerabilities. Check that the current GRUB 2 configuration has page poisoning enabled with the following command: $ sudo grubby --info=ALL | grep args | grep -v 'page_poison=1' If any output is returned, this is a finding. Check that page poisoning is enabled by default to persist in kernel updates with the following command: $ sudo grep page_poison /etc/default/grub GRUB_CMDLINE_LINUX="page_poison=1" If "page_poison" is not set to "1", is missing or commented out, this is a finding.

    Fix

    Configure RHEL 10 to enable page poisoning with the following commands: $ sudo grubby --update-kernel=ALL --args="page_poison=1"

  338. RHEL-10-701010 CAT II V-281303 · SRG-OS-000134-GPOS-00068

    RHEL 10 must clear memory when it is freed to prevent use-after-free attacks.

    Maps to SC-3 via CCI-001084
    Check

    Verify RHEL 10 is configured so that the current GRUB2 configuration mitigates use-after-free vulnerabilities by employing memory poisoning. Check that the current GRUB2 configuration mitigates use-after-free vulnerabilities by employing memory poisoning with the following command: $ sudo grubby --info=ALL | grep args | grep -v init_on_free=1 If any output is returned, this is a finding. Check that page poisoning is enabled by default to persist in kernel updates with the following command: $ sudo grep grub_cmdline_linux /etc/default/grub GRUB_CMDLINE_LINUX="... init_on_free=1" If "init_on_free=1" is missing or commented out, this is a finding.

    Fix

    Configure RHEL 10 to enable "init_on_free" with the following command: $ sudo grubby --update-kernel=ALL --args="init_on_free=1"

  339. RHEL-10-701020 CAT II V-281304 · SRG-OS-000433-GPOS-00193

    RHEL 10 must enable mitigations against processor-based vulnerabilities.

    Maps to CM-7, SI-16 via CCI-002824, CCI-000381
    Check

    Verify RHEL 10 enables kernel page-table isolation with the following command: $ sudo grubby --info=ALL | grep args | grep -v 'pti=on' If any output is returned, this is a finding. Check that kernel page-table isolation is enabled by default to persist in kernel updates: $ sudo grep pti /etc/default/grub GRUB_CMDLINE_LINUX="pti=on" If "pti" is not set to "on", is missing, or is commented out, this is a finding.

    Fix

    Configure RHEL 10 to enable kernel page-table isolation with the following command: $ sudo grubby --update-kernel=ALL --args="pti=on"

  340. RHEL-10-701030 CAT II V-281305 · SRG-OS-000132-GPOS-00067

    RHEL 10 must restrict access to the kernel message buffer.

    Maps to SC-2, SC-4 via CCI-001082, CCI-001090
    Check

    Verify RHEL 10 is configured to restrict access to the kernel message buffer. Check the status of the "kernel.dmesg_restrict" kernel parameter with the following command: $ sudo sysctl kernel.dmesg_restrict kernel.dmesg_restrict = 1 If "kernel.dmesg_restrict" is not set to "1" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to restrict access to the kernel message buffer. Create a drop-in if it does not already exist: $ sudo vi /etc/sysctl.d/99-dmesg_restrict.conf Add the following to the file: kernel.dmesg_restrict = 1 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  341. RHEL-10-701040 CAT II V-281306 · SRG-OS-000132-GPOS-00067

    RHEL 10 must prevent kernel profiling by nonprivileged users.

    Maps to SC-2, SC-4 via CCI-001082, CCI-001090
    Check

    Verify RHEL 10 is configured to prevent kernel profiling by nonprivileged users. Check the status of the "kernel.perf_event_paranoid" kernel parameter: $ sudo sysctl kernel.perf_event_paranoid kernel.perf_event_paranoid = 2 If "kernel.perf_event_paranoid" is not set to "2" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to prevent kernel profiling by nonprivileged users. Create a drop-in if it does not already exist: $ sudo vi /etc/sysctl.d/99-kernel_perf_event_paranoid.conf Add the following to the file: kernel.perf_event_paranoid = 2 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  342. RHEL-10-701060 CAT II V-281308 · SRG-OS-000132-GPOS-00067

    RHEL 10 must restrict exposed kernel pointer address access.

    Maps to SC-2, SI-16 via CCI-001082, CCI-002824
    Check

    Verify RHEL 10 is configured to restrict exposed kernel pointer address access. Verify the runtime status of the "kernel.kptr_restrict" kernel parameter with the following command: $ sudo sysctl kernel.kptr_restrict kernel.kptr_restrict = 1 If "kernel.kptr_restrict" is not set to "1" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to restrict exposed kernel pointer address access. Create a drop-in if it does not already exist: $ sudo vi /etc/sysctl.d/99-kernel_kptr_restrict.conf Add the following to the file: kernel.kptr_restrict = 1 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  343. RHEL-10-701070 CAT II V-281309 · SRG-OS-000312-GPOS-00122

    RHEL 10 must enable kernel parameters to enforce discretionary access control (DAC) on hardlinks.

    Maps to AC-3(4), AC-6(10) via CCI-002165, CCI-002235
    Check

    Verify RHEL 10 is configured to enable DAC on hardlinks. Check the status of the "fs.protected_hardlinks" kernel parameter with the following command: $ sudo sysctl fs.protected_hardlinks fs.protected_hardlinks = 1 If "fs.protected_hardlinks" is not set to "1" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to enable DAC on hardlinks. Create a drop-in if it does not already exist: $ sudo vi /etc/sysctl.d/99-fs_protected_hardlinks.conf Add the following to the file: fs.protected_hardlinks = 1 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  344. RHEL-10-701080 CAT II V-281310 · SRG-OS-000312-GPOS-00122

    RHEL 10 must enable kernel parameters to enforce discretionary access control (DAC) on symlinks.

    Maps to AC-3(4), AC-6(10) via CCI-002165, CCI-002235
    Check

    Verify RHEL 10 is configured to enable DAC on symlinks. Check the status of the "fs.protected_symlinks" kernel parameter with the following command: $ sudo sysctl fs.protected_symlinks fs.protected_symlinks = 1 If "fs.protected_symlinks" is not set to "1" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to enable DAC on symlinks with the following: Create a drop-in if it does not already exist: $ sudo vi /etc/sysctl.d/99-fs_protected_symlinks.conf Add the following to the file: fs.protected_symlinks = 1 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  345. RHEL-10-701090 CAT II V-281311 · SRG-OS-000095-GPOS-00049

    RHEL 10 must disable the "kernel.core_pattern".

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 disables storing core dumps. Check the status of the "kernel.core_pattern" kernel parameter with the following command: $ sudo sysctl kernel.core_pattern kernel.core_pattern = |/bin/false If "kernel.core_pattern" is not set to "|/bin/false", or a line is not returned and the need for core dumps is not documented with the information system security officer as an operational requirement, this is a finding.

    Fix

    Configure RHEL 10 to disable storing core dumps. Create a drop-in if it does not already exist: $ sudo vi /etc/sysctl.d/99-kernel_core_pattern.conf Add the following to the file: kernel.core_pattern = |/bin/false Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  346. RHEL-10-701100 CAT II V-281312 · SRG-OS-000095-GPOS-00049

    RHEL 10 must be configured to disable the Controller Area Network (CAN) kernel module.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 disables the ability to load the CAN kernel module with the following command: $ sudo grep -rs can /etc/modprobe.conf /etc/modprobe.d/* | grep -v '#' /etc/modprobe.d/can.conf:install can /bin/false /etc/modprobe.d/can.conf:blacklist can If the command does not return any output, or the lines are commented out, and use of CAN is not documented with the information system security officer as an operational requirement, this is a finding.

    Fix

    Configure RHEL 10 to disable the ability to load the CAN kernel module. Create a drop-in if it does not already exist: $ sudo vi /etc/modprobe.d/can.conf Add the following lines to the file: install can /bin/false blacklist can

  347. RHEL-10-701110 CAT II V-281313 · SRG-OS-000095-GPOS-00049

    RHEL 10 must disable the Stream Control Transmission Protocol (SCTP) kernel module.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 disables the ability to load the sctp kernel module with the following command: $ sudo grep -rs sctp /etc/modprobe.conf /etc/modprobe.d/* | grep -v '#' /etc/modprobe.d/sctp-blacklist.conf:install sctp /bin/false /etc/modprobe.d/sctp-blacklist.conf:blacklist sctp If the command does not return any output, or the lines are commented out, and use of sctp is not documented with the information system security officer as an operational requirement, this is a finding.

    Fix

    Configure RHEL 10 to disable the ability to load the sctp kernel module. Create a drop-in if it does not already exist: $ sudo vi /etc/modprobe.d/sctp.conf Add the following lines to the file: install sctp /bin/false blacklist sctp

  348. RHEL-10-701120 CAT II V-281314 · SRG-OS-000095-GPOS-00049

    RHEL 10 must disable the Transparent Inter Process Communication (TIPC) kernel module.

    Maps to CM-7 via CCI-000381
    Check

    Verify RHEL 10 disables the ability to load the tipc kernel module with the following command: $ sudo grep -rs tipc /etc/modprobe.conf /etc/modprobe.d/* | grep -v '#' /etc/modprobe.d/tipc-blacklist.conf:install tipc /bin/false /etc/modprobe.d/tipc-blacklist.conf:blacklist tipc If the command does not return any output, or the lines are commented out, and use of tipc is not documented with the information system security officer as an operational requirement, this is a finding.

    Fix

    Configure RHEL 10 to disable the ability to load the tipc kernel module. Create a drop-in if it does not already exist: $ sudo vi /etc/modprobe.d/tipc.conf Add the following lines to the file: install tipc /bin/false blacklist tipc

  349. RHEL-10-701130 CAT II V-281315 · SRG-OS-000433-GPOS-00193

    RHEL 10 must implement address space layout randomization (ASLR) to protect its memory from unauthorized code execution.

    Maps to SI-16 via CCI-002824
    Check

    Verify RHEL 10 is implementing ASLR. Check the status of the "kernel.randomize_va_space" kernel parameter with the following command: $ sudo sysctl kernel.randomize_va_space kernel.randomize_va_space = 2 If "kernel.randomize_va_space" is not set to "2", this is a finding. Check that the configuration files are present to enable this kernel parameter. $ sudo grep -rs kernel.randomize_va_space /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf /etc/sysctl.d/99-kernel_randomize_va_space.conf:kernel.randomize_va_space = 2 If "kernel.randomize_va_space" is not set to "2", is missing or commented out, this is a finding. If conflicting results are returned, this is a finding.

    Fix

    Configure RHEL 10 to implement ASLR. $ echo 'kernel.randomize_va_space = 2' | sudo tee /etc/sysctl.d/99-kernel_randomize_va_space.conf Remove any configurations that conflict with the above from the following locations: /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf Issue the following command to make the changes take effect: $ sudo sysctl --system

  350. RHEL-10-701140 CAT II V-281316 · SRG-OS-000132-GPOS-00067

    RHEL 10 must restrict usage of ptrace to descendant processes.

    Maps to SC-2 via CCI-001082
    Check

    Verify RHEL 10 restricts the usage of ptrace to descendant processes. Check the status of the "kernel.yama.ptrace_scope" kernel parameter with the following command: $ sysctl kernel.yama.ptrace_scope kernel.yama.ptrace_scope = 1 If the network parameter "kernel.yama.ptrace_scope" is not equal to "1", or nothing is returned, this is a finding.

    Fix

    Configure RHEL 10 to restrict the usage of ptrace to descendant processes. Create the drop-in if it does not already exist: $ sudo vi /etc/sysctl.d/99-kernel_yama.ptrace_scope.conf Add the following line to the file: kernel.yama.ptrace_scope = 1 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  351. RHEL-10-701150 CAT II V-281317 · SRG-OS-000095-GPOS-00049

    RHEL 10 must disable core dump backtraces.

    Maps to CM-7 via CCI-000381
    Check

    Note: If kernel dumps are disabled in accordance with RHEL-10-701090, this requirement is not applicable. Verify RHEL 10 disables core dump backtraces by issuing the following command: $ sudo grep -ir ProcessSizeMax /etc/systemd/ | grep -v '#' /etc/systemd/coredump.conf:ProcessSizeMax=0 If the "ProcessSizeMax" item is missing or the value is anything other than "0", and the need for core dumps is not documented with the information system security officer as an operational requirement for all domains that have the "core" item assigned, this is a finding.

    Fix

    Configure RHEL 10 to disable core dump backtraces. Create or edit the setting in a drop-in configuration file: $ sudo vi /etc/systemd/coredump.conf: Add the following line: ProcessSizeMax=0

  352. RHEL-10-701160 CAT II V-281318 · SRG-OS-000095-GPOS-00049

    RHEL 10 must disable storing core dumps.

    Maps to CM-7 via CCI-000381
    Check

    Note: If kernel dumps are disabled in accordance with RHEL-10-701090, this requirement is not applicable. Verify RHEL 10 disables storing core dumps for all users by issuing the following command: $ sudo grep -ir storage /etc/systemd/ | grep -v '#' /etc/systemd/coredump.conf:Storage=none If the "Storage" item is missing or the value is anything other than "none", and the need for core dumps is not documented with the information system security officer as an operational requirement for all domains that have the "core" item assigned, this is a finding.

    Fix

    Configure RHEL 10 to disable storing core dumps for all users. Create or edit the setting in a drop-in configuration file: $ sudo vi /etc/systemd/coredump.conf Add the following line: Storage=none

  353. RHEL-10-701170 CAT II V-281319 · SRG-OS-000095-GPOS-00049

    RHEL 10 must disable core dumps for all users.

    Maps to CM-7 via CCI-000381
    Check

    Note: If kernel dumps are disabled in accordance with RHEL-10-701090, this requirement is not applicable. Verify RHEL 10 disables core dumps for all users by issuing the following command: $ sudo grep -r core /etc/security/ | grep -v '#' /etc/security/limits.d/core_dumps.conf:* hard core 0 This can be set as a global domain (with the * wildcard) but may be set differently for multiple domains. If the "core" item is missing or the value is anything other than "0", and the need for core dumps is not documented with the information system security officer as an operational requirement for all domains that have the "core" item assigned, this is a finding.

    Fix

    Configure RHEL 10 to disable core dumps for all users. Create or edit the setting in a drop-in configuration file: $ sudo vi /etc/security/limits.d/core_dumps.conf Add the following line: * hard core 0 Remove any entries for users or groups with a value set to anything other than "0".

  354. RHEL-10-701180 CAT II V-281320 · SRG-OS-000312-GPOS-00124

    RHEL 10 must disable acquiring, saving, and processing core dumps.

    Maps to AC-3(4) via CCI-002165
    Check

    Note: If kernel dumps are disabled in accordance with RHEL-10-701090, this requirement is not applicable. Verify RHEL 10 is not configured to acquire, save, or process core dumps with the following command: $ sudo systemctl status systemd-coredump.socket o systemd-coredump.socket Loaded: masked (Reason: Unit systemd-coredump.socket is masked.) Active: inactive (dead) ... If the "systemd-coredump.socket" is loaded and not masked, and the need for core dumps is not documented with the information system security officer as an operational requirement, this is a finding.

    Fix

    Configure RHEL 10 to disable the systemd-coredump.socket with the following command: $ sudo systemctl mask --now systemd-coredump.socket Created symlink /etc/systemd/system/systemd-coredump.socket -> /dev/null Reload the daemon for this change to take effect. $ sudo systemctl daemon-reload

  355. RHEL-10-701190 CAT II V-281321 · SRG-OS-000433-GPOS-00192

    RHEL 10 must implement nonexecutable data to protect its memory from unauthorized code execution.

    Maps to SI-16 via CCI-002824
    Check

    Verify RHEL 10 enables ExecShield. Run the following command: $ sudo grep ^flags /proc/cpuinfo | grep -Ev '([^[:alnum:]])(nx)([^[:alnum:]]|$)' If any output is returned, this is a finding. Run the following command: $ sudo grubby --info=ALL | grep args | grep -E '([^[:alnum:]])(noexec)([^[:alnum:]])' If any output is returned, this is a finding.

    Fix

    Configure RHEL 10 to enable ExecShield. If "/proc/cpuinfo" shows that one or more processors do not enable ExecShield (lack the "nx" feature flag), verify the NX/XD feature is not disabled in the BIOS or UEFI. If it is disabled, enable it. If the "noexec" option is present on the kernel command line, update the GRUB 2 bootloader configuration to remove it by running the following command: $ sudo grubby --update-kernel=ALL --remove-args=noexec

  356. RHEL-10-701200 CAT II V-281322 · SRG-OS-000269-GPOS-00103

    RHEL 10 must disable the kdump service.

    Maps to SC-24 via CCI-001665
    Check

    Verify RHEL 10 disables the kdump service in system boot configuration with the following command: $ sudo systemctl is-enabled kdump masked Verify the kdump service is not active (i.e., not running) through current runtime configuration with the following command: $ sudo systemctl is-active kdump failed Verify the kdump service is masked with the following command: $ sudo systemctl show kdump | grep "LoadState\|UnitFileState" LoadState=masked UnitFileState=masked If the "kdump" service is loaded or active and is not masked, this is a finding.

    Fix

    Configure RHEL 10 to disable and mask the kdump service. To disable the kdump service, run the following command: $ sudo systemctl disable --now kdump Removed '/etc/systemd/system/multi-user.target.wants/kdump.service'. To mask the kdump service, run the following command: $ sudo systemctl mask --now kdump Created symlink '/etc/systemd/system/kdump.service' ? '/dev/null'.

  357. RHEL-10-701210 CAT II V-281323 · SRG-OS-000114-GPOS-00059

    RHEL 10 must disable file system automount function.

    Maps to IA-3 via CCI-000778, CCI-001958
    Check

    Note: If the "autofs" service is not installed, this requirement is not applicable. Verify RHEL 10 is configured so that the file system automount function has been disabled with the following command: $ systemctl is-enabled autofs not-found If the returned value is not "masked", "disabled", or "not-found", this is a finding.

    Fix

    Configure RHEL 10 to disable the ability to automount devices. The "autofs" service can be disabled with the following command: $ sudo systemctl mask --now autofs.service

  358. RHEL-10-701220 CAT II V-281324 · SRG-OS-000375-GPOS-00160

    RHEL 10 must enable certificate-based smart card authentication.

    Maps to IA-2(1), IA-2(2), IA-2(6) via CCI-004046, CCI-000765, CCI-000766
    Check

    Note: If the system administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable. Verify RHEL 10 enables smart cards in the System Security Services Daemon (SSSD) with the following command: $ sudo grep -ir pam_cert_auth /etc/sssd/sssd.conf /etc/sssd/conf.d/ /etc/sssd/conf.d/sssd.conf:pam_cert_auth = True If "pam_cert_auth" is not set to "True", the line is commented out, or the line is missing, this is a finding.

    Fix

    Configure RHEL 10 to enable certificate-based smart card authentication. Edit the file "/etc/sssd/sssd.conf" or a configuration file in "/etc/sssd/conf.d" and add or edit the following line: pam_cert_auth = True

  359. RHEL-10-701230 CAT II V-281325 · SRG-OS-000375-GPOS-00160

    RHEL 10 must implement certificate status checking for multifactor authentication.

    Maps to IA-2(6), IA-2(12) via CCI-004046, CCI-001954, CCI-004047
    Check

    Note: If the system administrator (SA) demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable. Verify RHEL 10 implements OCSP and is using the proper digest value on the system with the following command: $ sudo grep -irs certificate_verification /etc/sssd/sssd.conf /etc/sssd/conf.d/ | grep -v "^#" /etc/sssd/conf.d/certificate_verification.conf:certificate_verification = ocsp_dgst=sha512 If the certificate_verification line is missing from the [sssd] section, or is missing "ocsp_dgst=sha512", ask the SA to indicate what type of multifactor authentication is being used and how the system implements certificate status checking. If there is no evidence of certificate status checking being used, this is a finding.

    Fix

    Configure RHEL 10 to implement certificate status checking for multifactor authentication. Review the "/etc/sssd/conf.d/certificate_verification.conf" file to determine if the system is configured to prevent OCSP or certificate verification. Add the following line to the [sssd] section of the "/etc/sssd/conf.d/certificate_verification.conf" file: certificate_verification = ocsp_dgst=sha512 Set the correct ownership and permissions on the "/etc/sssd/conf.d/certificate_verification.conf" file by running these commands: $ sudo chown root:root "/etc/sssd/conf.d/certificate_verification.conf" $ sudo chmod 600 "/etc/sssd/conf.d/certificate_verification.conf" Restart the "sssd" service with the following command for the changes to take effect: $ sudo systemctl restart sssd.service

  360. RHEL-10-701240 CAT II V-281326 · SRG-OS-000067-GPOS-00035

    RHEL 10 must, for PKI-based authentication, enforce authorized access to the corresponding private key.

    Maps to IA-5(2) via CCI-000186
    Check

    Note: If the system administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable. Verify RHEL 10 SSH private key files have a passcode. For each private key stored on the system, use the following command: $ sudo ssh-keygen -y -f /path/to/file The expected output is a password prompt: "Enter passphrase:" If the password prompt is not displayed, and the contents of the key are displayed, this is a finding.

    Fix

    Configure RHEL 10, for PKI-based authentication, enforces authorized access to the corresponding private key. Create a new private and public key pair that uses a passcode with the following command: $ sudo ssh-keygen -N [passphrase]

  361. RHEL-10-701250 CAT II V-281327 · SRG-OS-000080-GPOS-00048

    RHEL 10 must require authentication to access emergency mode.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 requires authentication for emergency mode with the following command: $ sudo grep systemd-sulogin /usr/lib/systemd/system/emergency.service # ExecStart=-/usr/lib/systemd/systemd-sulogin-shell emergency If the line is not returned from the default "systemd" file, use the following command to look for modifications to "emergency.service": $ sudo grep systemd-sulogin /etc/systemd/system/emergency.service.d/*.conf ExecStart=-/usr/lib/systemd/systemd-sulogin-shell emergency If the line is not returned from either location, this is a finding. Note: The configuration setting can be in either the default location or the drop-in file but not in both locations.

    Fix

    Configure RHEL 10 to require authentication for emergency mode. Create a directory for supplementary configuration files: $ sudo mkdir /etc/systemd/system/emergency.service.d/ Copy the original "emergency.service" file to the new directory with: $ sudo cp /usr/lib/systemd/system/emergency.service /etc/systemd/system/emergency.service.d/emergency.service.conf Open the new file: $ sudo vi /etc/systemd/system/emergency.service.d/emergency.service.conf Add or modify the following line in the new file: ExecStart=-/usr/lib/systemd/systemd-sulogin-shell emergency Comment out or remove the ExecStart and ExecStartPre lines in "/usr/lib/systemd/system/emergency.service" as they can only exist in one location. Apply changes to unit files without rebooting the system: $ sudo systemctl daemon-reload

  362. RHEL-10-701260 CAT II V-281328 · SRG-OS-000080-GPOS-00048

    RHEL 10 must require authentication to access single-user mode.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 requires authentication for single-user mode with the following command: $ sudo grep systemd-sulogin /usr/lib/systemd/system/rescue.service # ExecStart=-/usr/lib/systemd/systemd-sulogin-shell rescue If the line is not returned from the default "systemd" file, use the following command to look for modifications to "rescue.service": $ sudo grep systemd-sulogin /etc/systemd/system/rescue.service.d/*.conf ExecStart=-/usr/lib/systemd/systemd-sulogin-shell rescue If the line is not returned from either location, this is a finding. Note: The configuration setting can be in either the default location or the drop-in file but not in both locations.

    Fix

    Configure RHEL 10 to require authentication for single-user mode. Create a directory for supplementary configuration files: $ sudo mkdir /etc/systemd/system/rescue.service.d/ Copy the original "rescue.service" file to the new directory with: $ sudo cp /usr/lib/systemd/system/rescue.service /etc/systemd/system/rescue.service.d/rescue.service.conf Open the new file: $ sudo vi /etc/systemd/system/rescue.service.d/rescue.service.conf Add or modify the following line in the new file: ExecStart=-/usr/lib/systemd/systemd-sulogin-shell rescue Comment out or remove the "ExecStart" and "ExecStartPre" lines in "/usr/lib/systemd/system/rescue.service" as they can only exist in one location. Apply changes to unit files without rebooting the system: $ sudo systemctl daemon-reload

  363. RHEL-10-701270 CAT II V-281329 · SRG-OS-000066-GPOS-00034

    RHEL 10 must, for PKI-based authentication, validate certificates by constructing a certification path (which includes status information) to an accepted trust anchor.

    Maps to IA-5(2), SC-17, SC-28(3) via CCI-000185, CCI-004068, CCI-004909, CCI-004910
    Check

    Note: If the system administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable. Verify RHEL 10, for PKI-based authentication, has valid certificates by constructing a certification path (which includes status information) to an accepted trust anchor. Check that the system has a valid DOD root CA installed with the following command: $ sudo openssl x509 -text -in /etc/sssd/pki/sssd_auth_ca_db.pem Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha256WithRSAEncryption Issuer: C = US, O = U.S. Government, OU = DoW, OU = PKI, CN = DoD Root CA 3 Validity Not Before: Mar 20 18:46:41 2012 GMT Not After: Dec 30 18:46:41 2029 GMT Subject: C = US, O = U.S. Government, OU = DoW, OU = PKI, CN = DoD Root CA 3 Subject Public Key Info: Public Key Algorithm: rsaEncryption If the root CA file is not a DoW-issued certificate with a valid date and installed in the "/etc/sssd/pki/sssd_auth_ca_db.pem" location, this is a finding.

    Fix

    Configure RHEL 10, for PKI-based authentication, to validate certificates by constructing a certification path (which includes status information) to an accepted trust anchor. Obtain a valid copy of the DoW root CA file from the PKI CA certificate bundle from cyber.mil and copy the DoW_PKE_CA_chain.pem into the following file: /etc/sssd/pki/sssd_auth_ca_db.pem

  364. RHEL-10-701280 CAT II V-281330 · SRG-OS-000068-GPOS-00036

    RHEL 10 must map the authenticated identity to the user or group account for public key infrastructure (PKI)-based authentication.

    Maps to IA-5(2) via CCI-000187
    Check

    Note: If the system administrator (SA) demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable. Verify RHEL 10 maps the authenticated identity to the user or group account for PKI-based authentication. Verify the certificate of the user or group is mapped to the corresponding user or group in the "sssd.conf" file with the following command: $ sudo find /etc/sssd/sssd.conf /etc/sssd/conf.d/ -type f -exec cat {} \; [certmap/testing.test/rule_name] matchrule =.*EDIPI@mil maprule = (userCertificate;binary={cert!bin}) domains = testing.test If the certmap section does not exist, ask the SA to indicate how certificates are mapped to accounts. If there is no evidence of certificate mapping, this is a finding.

    Fix

    Configure RHEL 10 to map the authenticated identity to the user or group account by adding or modifying the certmap section of the "/etc/sssd/sssd.conf" file based on the following example: [certmap/testing.test/rule_name] matchrule = .*EDIPI@mil maprule = (userCertificate;binary={cert!bin}) domains = testing.test Restart the "sssd" service with the following command for the changes to take effect: $ sudo systemctl restart sssd.service

  365. RHEL-10-701290 CAT II V-281331 · SRG-OS-000383-GPOS-00166

    RHEL 10 must prohibit the use of cached authenticators after one day.

    Maps to IA-5(13) via CCI-002007
    Check

    Verify RHEL 10 System Security Services Daemon (SSSD) prohibits the use of cached authentications after one day with the following command: Note: Cached authentication settings should be configured even if smart card authentication is not used on the system. Determine if SSSD allows cached authentications with the following command: $ sudo grep -irs cache_credentials /etc/sssd/sssd.conf /etc/sssd/conf.d/ | grep -v "^#" cache_credentials = true If "cache_credentials" is set to "false" or missing from the configuration file, this is not a finding and no further checks are required. If "cache_credentials" is set to "true", check that SSSD prohibits the use of cached authentications after one day with the following command: $ sudo grep -irs offline_credentials_expiration /etc/sssd/sssd.conf /etc/sssd/conf.d/ | grep -v "^#" offline_credentials_expiration = 1 If "offline_credentials_expiration" is not set to a value of "1", this is a finding.

    Fix

    Configure RHEL 10 SSSD to prohibit the use of cached authentications after one day. Edit the file "/etc/sssd/sssd.conf" or a configuration file in "/etc/sssd/conf.d" and add or edit the following line just below the line [pam]: offline_credentials_expiration = 1 Restart the "sssd" service with the following command for the changes to take effect: $ sudo systemctl restart sssd.service

  366. RHEL-10-800000 CAT II V-281332 · SRG-OS-000096-GPOS-00050

    RHEL 10 must control remote access methods.

    Maps to AC-17(1), CM-7 via CCI-000382, CCI-002314
    Check

    Verify RHEL 10 controls remote access methods by inspecting the firewall configuration. Inspect the list of enabled firewall ports and verify they are configured correctly by running the following command: $ sudo firewall-cmd --list-all Ask the system administrator for the site or program Ports, Protocols, and Services Management Component Local Service Assessment (PPSM CLSA). Verify the services allowed by the firewall match the PPSM CLSA. If there are additional ports, protocols, or services that are not in the PPSM CLSA, or there are ports, protocols, or services that are prohibited by the PPSM Category Assurance List (CAL), or there are no firewall rules configured, this is a finding.

    Fix

    Configure RHEL 10 to allow approved settings and/or running services to comply with the PPSM CLSA for the site or program and the PPSM CAL. To open a port for a service, configure "firewalld" using the following command: $ sudo firewall-cmd --permanent --add-port=port_number/tcp or $ sudo firewall-cmd --permanent --add-service=service_name

  367. RHEL-10-800010 CAT II V-281333 · SRG-OS-000096-GPOS-00050

    RHEL 10 must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services, as defined in the Ports, Protocols, and Services Management (PPSM) Category Assignments List (CAL) and vulnerability assessments.

    Maps to CM-7 via CCI-000382
    Check

    Verify RHEL 10 is configured to prohibit or restrict the use of functions, ports, protocols, and/or services as defined in the PPSM CAL and vulnerability assessments. Inspect the firewall configuration and running services to verify they are configured to prohibit or restrict the use of functions, ports, protocols, and/or services that are unnecessary or prohibited. Check which services are currently active with the following command: $ sudo firewall-cmd --list-all-zones Ask the system administrator for the site or program PPSM Component Local Service Assessment (CLSA). Verify the services allowed by the firewall match the PPSM CLSA. If there are additional ports, protocols, or services that are not in the PPSM CLSA, or there are ports, protocols, or services that are prohibited by the PPSM CAL, this is a finding.

    Fix

    Configure RHEL 10 to prohibit or restrict the use of functions, ports, protocols, and/or services as defined in the PPSM CAL and vulnerability assessments. Update the host's firewall settings and/or running services to comply with the PPSM CLSA for the site or program and the PPSM CAL. Run the following command to load the newly created rule(s): $ sudo firewall-cmd --reload

  368. RHEL-10-800020 CAT II V-281334 · SRG-OS-000423-GPOS-00187

    RHEL 10 must enforce that network interfaces not be in promiscuous mode.

    Maps to SC-8 via CCI-002418
    Check

    Verify RHEL 10 network interfaces are not in promiscuous mode with the following command: $ sudo ip link | grep -i promisc If network interfaces are found on the system in promiscuous mode and their use has not been approved by the ISSO and documented, this is a finding.

    Fix

    Configure RHEL 10 network interfaces to turn off promiscuous mode unless approved by the ISSO and documented. Set the promiscuous mode of an interface to "off" with the following command: $ sudo ip link set dev multicast off promisc off

  369. RHEL-10-800030 CAT II V-281335 · SRG-OS-000132-GPOS-00067

    RHEL 10 must disable access to the network bpf system call from nonprivileged processes.

    Maps to SC-2 via CCI-001082
    Check

    Verify RHEL 10 prevents privilege escalation through the kernel by disabling access to the bpf system call. Check the status of the "kernel.unprivileged_bpf_disabled" kernel parameter with the following command: $ sysctl kernel.unprivileged_bpf_disabled kernel.unprivileged_bpf_disabled = 1 If "kernel.unprivileged_bpf_disabled" is not set to "1" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to prevent privilege escalation through the kernel by disabling access to the bpf system call. Create the drop-in file if it does not already exist: $ sudo vi /etc/sysctl.d/99-kernel_unprivileged_bpf_disabled Add the following line to the file: kernel.unprivileged_bpf_disabled = 1 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  370. RHEL-10-800040 CAT II V-281336 · SRG-OS-000355-GPOS-00143

    RHEL 10 must securely compare internal information system clocks at least every 24 hours.

    Maps to AU-8, SC-45, SC-45(1) via CCI-004923, CCI-004926, CCI-001890, CCI-004922
    Check

    Verify RHEL 10 is securely comparing internal information system clocks at least every 24 hours with an NTP server with the following commands: $ sudo grep maxpoll /etc/chrony.conf server 0.us.pool.ntp.mil iburst maxpoll 16 If the "maxpoll" option is set to a number greater than 16, or the line is missing or commented out, this is a finding. Verify the "chrony.conf" file is configured to an authoritative DoW time source by running the following command: $ sudo grep -i server /etc/chrony.conf server 0.us.pool.ntp.mil If the parameter "server" is not set or is not set to an authoritative DoW time source, this is a finding.

    Fix

    Configure RHEL 10 to securely compare internal information system clocks at least every 24 hours with an NTP server by adding/modifying the following line in the "/etc/chrony.conf" file: server [ntp.server.name] iburst maxpoll 16

  371. RHEL-10-800050 CAT II V-281337 · SRG-OS-000433-GPOS-00192

    RHEL 10 must enable hardening for the Berkeley Packet Filter (BPF) just-in-time compiler.

    Maps to SI-16 via CCI-002824
    Check

    Verify RHEL 10 enables hardening for the BPF JIT compiler. Check the status of the "net.core.bpf_jit_harden" parameter with the following command: $ sudo sysctl net.core.bpf_jit_harden net.core.bpf_jit_harden = 2 If "net.core.bpf_jit_harden" is not equal to "2" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to enable hardening for the BPF JIT compiler. Create the drop-in file if it does not already exist: $ sudo vi /etc/sysctl.d/99-net_core-bpf_jit_harden.conf Add the following line to the file: net.core.bpf_jit_harden = 2 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  372. RHEL-10-800060 CAT II V-281338 · SRG-OS-000420-GPOS-00186

    RHEL 10 must have at least two name servers configured for systems using Domain Name Server (DNS) resolution.

    Maps to SC-5 via CCI-002385
    Check

    Note: If the system is running in a cloud platform and the cloud provider gives a single, highly available IP address for DNS configuration, this control is not applicable. Verify RHEL 10 has at least two name servers configured for systems using DNS resolution. Verify the name servers used by the system with the following command: $ sudo grep nameserver /etc/resolv.conf nameserver 192.168.1.2 nameserver 192.168.1.3 If fewer than two lines are returned that are not commented out, this is a finding.

    Fix

    Configure RHEL 10 to use two or more name servers for DNS resolution based on the DNS mode of the system. If the NetworkManager DNS mode is set to "none", add the following lines to "/etc/resolv.conf": nameserver [name server 1] nameserver [name server 2] Replace [name server 1] and [name server 2] with the IPs of two different DNS resolvers. If the NetworkManager DNS mode is set to "default", add two DNS servers to a NetworkManager connection using the following command: $ nmcli connection modify [connection name] ipv4.dns [name server 1],[name server 2] Replace [name server 1] and [name server 2] with the IPs of two different DNS resolvers. Replace [connection name] with a valid NetworkManager connection name on the system. Replace ipv4 with ipv6 if IPv6 DNS servers are used.

  373. RHEL-10-800070 CAT II V-281339 · SRG-OS-000080-GPOS-00048

    RHEL 10 must not have unauthorized IP tunnels configured.

    Maps to AC-3 via CCI-000213
    Check

    Verify RHEL 10 does not have unauthorized IP tunnels configured. Determine if the IPsec service is active with the following command: $ systemctl is-active ipsec Inactive If the IPsec service is active, check for configured IPsec connections ("conn"), with the following command: $ sudo grep -rni conn /etc/ipsec.conf /etc/ipsec.d/ Verify any returned results are documented with the ISSO. If the IPsec tunnels are active and not approved, this is a finding.

    Fix

    Configure RHEL 10 to not have unauthorized IP tunnels configured. Remove all unapproved tunnels from the system, or document them with the ISSO.

  374. RHEL-10-800080 CAT II V-281340 · SRG-OS-000420-GPOS-00186

    RHEL 10 must be configured to use Transmission Control Protocol (TCP) syncookies.

    Maps to SC-5, SC-5(2) via CCI-002385, CCI-001095
    Check

    Verify RHEL 10 is configured to use Internet Protocol version 4 (IPv4) TCP syncookies. Check the value of all "net.ipv4.tcp_syncookies" variables with the following command: $ sudo sysctl net.ipv4.tcp_syncookies net.ipv4.tcp_syncookies = 1 If the network parameter "ipv4.tcp_syncookies" is not equal to "1", or nothing is returned, this is a finding.

    Fix

    Configure RHEL 10 to use TCP syncookies. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/99-ipv4_tcp_syncookies.conf Add the following line to the file: net.ipv4.tcp_syncookies = 1 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  375. RHEL-10-800090 CAT II V-281341 · SRG-OS-000420-GPOS-00186

    RHEL 10 must ignore Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirect messages.

    Maps to SC-5 via CCI-002385, CCI-001096
    Check

    Verify RHEL 10 will not accept IPv4 ICMP redirect messages. Check the value of all "net.ipv4.conf.all.accept_redirects" variables with the following command: $ sudo sysctl net.ipv4.conf.all.accept_redirects net.ipv4.conf.all.accept_redirects = 0 If "net.ipv4.conf.all.accept_redirects" is not set to "0" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to ignore IPv4 ICMP redirect messages. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/99-ipv4_accept_redirects.conf Add the following line to the file: net.ipv4.conf.all.accept_redirects = 0 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  376. RHEL-10-800100 CAT II V-281342 · SRG-OS-000420-GPOS-00186

    RHEL 10 must not forward Internet Protocol version 4 (IPv4) source-routed packets.

    Maps to SC-5, SC-7 via CCI-002385, CCI-001097
    Check

    Verify RHEL 10 will not accept IPv4 source-routed packets. Check the value of the "net.ipv4.conf.all.accept_source_route" variable with the following command: $ sudo sysctl net.ipv4.conf.all.accept_source_route net.ipv4.conf.all.accept_source_route = 0 If "net.ipv4.conf.all.accept_source_route" is not set to "0" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to ignore IPv4 source-routed packets. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/99-ipv4_accept_source.conf Add the following line to the file: net.ipv4.conf.all.accept_source_route = 0 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  377. RHEL-10-800110 CAT II V-281343 · SRG-OS-000420-GPOS-00186

    RHEL 10 must log Internet Protocol version 4 (IPv4) packets with impossible addresses.

    Maps to SC-5, SC-7 via CCI-002385, CCI-001098
    Check

    Verify RHEL 10 logs IPv4 martian packets. Check the value of the "net.ipv4.conf.all.log_martians" variable with the following command: $ sudo sysctl net.ipv4.conf.all.log_martians net.ipv4.conf.all.log_martians = 1 If "net.ipv4.conf.all.log_martians" is not set to "1" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to log martian packets on IPv4 interfaces. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/99-ipv4_log_martians.conf Add the following line to the file: net.ipv4.conf.all.log_martians=1 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  378. RHEL-10-800120 CAT II V-281344 · SRG-OS-000420-GPOS-00186

    RHEL 10 must log Internet Protocol version 4 (IPv4) packets with impossible addresses by default.

    Maps to SC-5 via CCI-002385, CCI-001099
    Check

    Verify RHEL 10 logs IPv4 martian packets by default. Check the value of the "net.ipv4.conf.default.log_martians" variable with the following command: $ sudo sysctl net.ipv4.conf.default.log_martians net.ipv4.conf.default.log_martians = 1 If "net.ipv4.conf.default.log_martians" is not set to "1" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to log martian packets on IPv4 interfaces by default. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/99-ipv4_log_martians.conf Add the following line to the file: net.ipv4.conf.default.log_martians=1 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  379. RHEL-10-800130 CAT II V-281345 · SRG-OS-000420-GPOS-00186

    RHEL 10 must use reverse path filtering on all Internet Protocol version 4 (IPv4) interfaces.

    Maps to SC-5 via CCI-002385, CCI-001100
    Check

    Verify RHEL 10 uses reverse path filtering on all IPv4 interfaces. Check the value of the "net.ipv4.conf.all.rp_filter" variable with the following command: $ sudo sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.all.rp_filter = 1 If "net.ipv4.conf.all.rp_filter" is not set to "1" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to use reverse path filtering on all IPv4 interfaces. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/99-ipv4_rp_filter.conf Add the following line to the file: net.ipv4.conf.all.rp_filter = 1 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  380. RHEL-10-800140 CAT II V-281346 · SRG-OS-000420-GPOS-00186

    RHEL 10 must prevent Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirect messages from being accepted.

    Maps to SC-5, SC-7(3) via CCI-002385, CCI-001101
    Check

    Verify RHEL 10 will not accept IPv4 ICMP redirect messages. Check the value of the default "net.ipv4.conf.default.accept_redirects" variable with the following command: $ sudo sysctl net.ipv4.conf.default.accept_redirects net.ipv4.conf.default.accept_redirects = 0 If "net.ipv4.conf.default.accept_redirects" is not set to "0" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to prevent IPv4 ICMP redirect messages from being accepted. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/99-ipv4_accept_redirects.conf Add the following line to the file: net.ipv4.conf.default.accept_redirects = 0 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  381. RHEL-10-800150 CAT II V-281347 · SRG-OS-000420-GPOS-00186

    RHEL 10 must not forward Internet Protocol version 4 (IPv4) source-routed packets by default.

    Maps to SC-5, SC-7(4) via CCI-002385, CCI-001102
    Check

    Verify RHEL 10 does not accept IPv4 source-routed packets by default. Check the value of the "net.ipv4.conf.default.accept_source_route" variable with the following command: $ sudo sysctl net.ipv4.conf.default.accept_source_route net.ipv4.conf.default.accept_source_route = 0 If "net.ipv4.conf.default.accept_source_route" is not set to "0" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to not forward IPv4 source-routed packets by default. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/99-ipv4_accept_source_route.conf Add the following line to the file: net.ipv4.conf.default.accept_source_route = 0 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  382. RHEL-10-800160 CAT II V-281348 · SRG-OS-000420-GPOS-00186

    RHEL 10 must use a reverse-path filter for Internet Protocol version 4 (IPv4) network traffic when possible by default.

    Maps to SC-5, SC-7(4) via CCI-002385, CCI-001103
    Check

    Verify RHEL 10 uses reverse path filtering on IPv4 interfaces. Check the value of the "net.ipv4.conf.default.rp_filter" with the following command: $ sudo sysctl net.ipv4.conf.default.rp_filter net.ipv4.conf.default.rp_filter = 1 If the returned line does not have a value of "1", or a line is not returned, this is a finding.

    Fix

    Configure RHEL 10 to use reverse path filtering on IPv4 interfaces by default. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/ipv4_rp_filter.conf Add the following line to the file: net.ipv4.conf.default.rp_filter = 1 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  383. RHEL-10-800170 CAT II V-281349 · SRG-OS-000420-GPOS-00186

    RHEL 10 must not respond to Internet Control Message Protocol (ICMP) echoes sent to a broadcast address.

    Maps to SC-5 via CCI-002385, CCI-001104
    Check

    Verify RHEL 10 ignores ICMP echoes sent to a broadcast address. Check the value of the "net.ipv4.icmp_echo_ignore_broadcasts" variable with the following command: $ sudo sysctl net.ipv4.icmp_echo_ignore_broadcasts net.ipv4.icmp_echo_ignore_broadcasts = 1 If "net.ipv4.icmp_echo_ignore_broadcasts" is not set to "1" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to ignore Internet Protocol version 4 (IPv4) ICMP echoes sent to a broadcast address. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/ipv4_icmp_echo_ignore_broadcasts.conf Add the following line to the file: net.ipv4.icmp_echo_ignore_broadcasts = 1 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  384. RHEL-10-800180 CAT II V-281350 · SRG-OS-000420-GPOS-00186

    RHEL 10 must limit the number of bogus Internet Control Message Protocol (ICMP) response errors logs.

    Maps to SC-5, SC-7(4) via CCI-002385, CCI-001105
    Check

    Verify RHEL 10 limits the number of bogus ICMP response errors logs. Check the value of the "net.ipv4.icmp_ignore_bogus_error_response" variables with the following command: $ sudo sysctl net.ipv4.icmp_ignore_bogus_error_responses net.ipv4.icmp_ignore_bogus_error_responses = 1 If "net.ipv4.icmp_ignore_bogus_error_response" is not set to "1" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to not log bogus ICMP errors. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/ipv4_icmp_ignore_bogus_error_responses.conf Add the following line to the file: net.ipv4.icmp_ignore_bogus_error_responses = 1 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  385. RHEL-10-800190 CAT II V-281351 · SRG-OS-000420-GPOS-00186

    RHEL 10 must not send Internet Control Message Protocol (ICMP) redirects.

    Maps to SC-5, SC-7(4) via CCI-002385, CCI-001106
    Check

    Verify RHEL 10 does not send IPv4 ICMP redirect messages. Check the value of the "net.ipv4.conf.all.send_redirects" variables with the following command: $ sudo sysctl net.ipv4.conf.all.send_redirects net.ipv4.conf.all.send_redirects = 0 If "net.ipv4.conf.all.send_redirects" is not set to "0" and is not documented with the information system security officer as an operational requirement or is missing, this is a finding.

    Fix

    Configure RHEL 10 to not send IPv4 ICMP redirect messages. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/ipv4_send_redirects.conf Add the following line to the file: net.ipv4.conf.all.send_redirects = 0 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  386. RHEL-10-800200 CAT II V-281352 · SRG-OS-000420-GPOS-00186

    RHEL 10 must not allow interfaces to perform Internet Control Message Protocol (ICMP) redirects by default.

    Maps to SC-5, SC-7(4) via CCI-002385, CCI-001107
    Check

    Verify RHEL 10 does not allow interfaces to perform Internet Protocol version 4 (IPv4) ICMP redirects by default. Check the value of the "net.ipv4.conf.default.send_redirects" variables with the following command: $ sudo sysctl net.ipv4.conf.default.send_redirects net.ipv4.conf.default.send_redirects=0 If "net.ipv4.conf.default.send_redirects" is not set to "0" and is not documented with the information system security officer as an operational requirement or is missing, this is a finding.

    Fix

    Configure RHEL 10 to not allow interfaces to perform IPv4 ICMP redirects by default. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/ipv4_send_redirects.conf Add the following line to the file: net.ipv4.conf.default.send_redirects = 0 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  387. RHEL-10-800210 CAT II V-281353 · SRG-OS-000420-GPOS-00186

    RHEL 10 must not enable Internet Protocol version 4 (IPv4) packet forwarding unless the system is a router.

    Maps to SC-5, SC-7(4) via CCI-002385, CCI-001108
    Check

    Verify RHEL 10 is not performing IPv4 packet forwarding unless the system is a router. Check that "net.ipv4.conf.all.forwarding" is disabled using the following command: $ sudo sysctl net.ipv4.conf.all.forwarding net.ipv4.conf.all.forwarding = 0 If "net.ipv4.conf.all.forwarding" is not set to "0" and is not documented with the information system security officer as an operational requirement or is missing, this is a finding.

    Fix

    Configure RHEL 10 to not allow IPv4 packet forwarding unless the system is a router. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/ipv4_forwarding.conf Add the following line to the file: net.ipv4.conf.all.forwarding = 0 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  388. RHEL-10-800220 CAT II V-281354 · SRG-OS-000420-GPOS-00186

    RHEL 10 must not accept router advertisements on all Internet Protocol version 6 (IPv6) interfaces.

    Maps to SC-5, SC-7(5) via CCI-002385, CCI-001109
    Check

    Note: If IPv6 is disabled on the system, this requirement is not applicable. Verify RHEL 10 does not accept router advertisements on all IPv6 interfaces, unless the system is a router. Check that "net.ipv6.conf.all.accept_ra" is set to not accept router advertisements by using the following command: $ sudo sysctl net.ipv6.conf.all.accept_ra net.ipv6.conf.all.accept_ra = 0 If "net.ipv6.conf.all.accept_ra" is not set to "0" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to not accept router advertisements on all IPv6 interfaces, unless the system is a router. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/ipv4_accept_ra.conf Add the following line to the file: net.ipv6.conf.all.accept_ra = 0 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  389. RHEL-10-800230 CAT II V-281355 · SRG-OS-000420-GPOS-00186

    RHEL 10 must ignore IPv6 Internet Control Message Protocol (ICMP) redirect messages.

    Maps to SC-5 via CCI-002385, CCI-001110
    Check

    Note: If IPv6 is disabled on the system, this requirement is not applicable. Verify RHEL 10 ignores IPv6 ICMP redirect messages. Check the value of the "net.ipv6.conf.all.accept_redirects" variable with the following command: $ sysctl net.ipv6.conf.all.accept_redirects net.ipv6.conf.all.accept_redirects = 0 If "net.ipv6.conf.all.accept_redirects" is not set to "0" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to ignore Internet Protocol version 6 (IPv6) ICMP redirect messages. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/ipv6_accept_redirects.conf Add the following line to the file: net.ipv6.conf.all.accept_redirects = 0 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  390. RHEL-10-800240 CAT II V-281356 · SRG-OS-000420-GPOS-00186

    RHEL 10 must not forward Internet Protocol version 6 (IPv6) source-routed packets.

    Maps to SC-5 via CCI-002385, CCI-001111
    Check

    Note: If IPv6 is disabled on the system, this requirement is not applicable. Verify RHEL 10 does not accept IPv6 source-routed packets. Check the value of the "net.ipv6.conf.all.accept_source_route" variable with the following command: $ sudo sysctl net.ipv6.conf.all.accept_source_route net.ipv6.conf.all.accept_source_route = 0 If "net.ipv6.conf.all.accept_source_route" is not set to "0" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to not accept IPv6 source-routed packets. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/ipv6_accept_source_route.conf Add the following line to the file: net.ipv6.conf.all.accept_source_route = 0 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  391. RHEL-10-800250 CAT II V-281357 · SRG-OS-000420-GPOS-00186

    RHEL 10 must not enable Internet Protocol version 6 (IPv6) packet forwarding unless the system is a router.

    Maps to SC-5, SC-7(8) via CCI-002385, CCI-001112
    Check

    Note: If IPv6 is disabled on the system, this requirement is not applicable. Verify RHEL 10 is not performing IPv6 packet forwarding unless the system is a router. Check the value of the "net.ipv6.conf.all.forwarding" variable with the following command: $ sudo sysctl net.ipv6.conf.all.forwarding net.ipv6.conf.all.forwarding = 0 If "net.ipv6.conf.all.forwarding" is not set to "0" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to not allow IPv6 packet forwarding unless the system is a router. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/ipv6_forwarding.conf Add the following line to the file: net.ipv6.conf.all.forwarding = 0 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  392. RHEL-10-800260 CAT II V-281358 · SRG-OS-000420-GPOS-00186

    RHEL 10 must not accept router advertisements on all Internet Protocol version 6 (IPv6) interfaces by default.

    Maps to SC-5, SC-7(8) via CCI-002385, CCI-001113
    Check

    Note: If IPv6 is disabled on the system, this requirement is not applicable. Verify RHEL 10 does not accept router advertisements on all IPv6 interfaces by default, unless the system is a router. Check the value of the "net.ipv6.conf.default.accept_ra" variable with the following command: $ sudo sysctl net.ipv6.conf.default.accept_ra net.ipv6.conf.default.accept_ra = 0 If "net.ipv6.conf.default.accept_ra" is not set to "0" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to not accept router advertisements on all IPv6 interfaces by default, unless the system is a router. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/ipv6_accept_ra.conf Add the following line to the file: net.ipv6.conf.default.accept_ra = 0 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  393. RHEL-10-800270 CAT II V-281359 · SRG-OS-000420-GPOS-00186

    RHEL 10 must prevent Internet Protocol version 6 (IPv6) Internet Control Message Protocol (ICMP) redirect messages from being accepted.

    Maps to SC-5, SC-7(8) via CCI-002385, CCI-001114
    Check

    Note: If IPv6 is disabled on the system, this requirement is not applicable. Verify RHEL 10 prevents IPv6 ICMP redirect messages from being accepted. Check the value of the "net.ipv6.conf.default.accept_redirects" variables with the following command: $ sudo sysctl net.ipv6.conf.default.accept_redirects net.ipv6.conf.default.accept_redirects = 0 If "net.ipv6.conf.default.accept_redirects" is not set to "0" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to prevent IPv6 ICMP redirect messages from being accepted. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/ipv6_accept_redirects.conf Add the following line to the file: net.ipv6.conf.default.accept_redirects = 0 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  394. RHEL-10-800280 CAT II V-281360 · SRG-OS-000420-GPOS-00186

    RHEL 10 must not forward Internet Protocol version 6 (IPv6) source-routed packets by default.

    Maps to SC-5 via CCI-002385, CCI-001115
    Check

    Note: If IPv6 is disabled on the system, this requirement is not applicable. Verify RHEL 10 does not accept IPv6 source-routed packets by default. Check the value of the "net.ipv6.conf.default.accept_source_route" variables with the following command: $ sudo sysctl net.ipv6.conf.default.accept_source_route net.ipv6.conf.default.accept_source_route = 0 If "net.ipv6.conf.default.accept_source_route" is not set to "0" or is missing, this is a finding.

    Fix

    Configure RHEL 10 to not accept IPv6 source-routed packets by default. Create a configuration file if it does not already exist: $ sudo vi /etc/sysctl.d/ipv6_accept_source_route.conf Add the following line to the file: net.ipv6.conf.default.accept_source_route = 0 Reload settings from all system configuration files with the following command: $ sudo sysctl --system

  395. RHEL-10-800290 CAT II V-281361 · SRG-OS-000420-GPOS-00186

    RHEL 10 must protect against or limit the effects of denial-of-service (DoS) attacks by ensuring that rate-limiting measures on impacted network interfaces are implemented.

    Maps to SC-5 via CCI-002385
    Check

    Verify RHEL 10 protects against or limits the effects of DoS attacks by ensuring rate-limiting measures on impacted network interfaces are implemented. Check that "nftables" is configured to allow rate limits on any connection to the system with the following command: $ sudo grep -i firewallbackend /etc/firewalld/firewalld.conf # FirewallBackend FirewallBackend=nftables If "nftables" is not set to "FirewallBackend", this is a finding.

    Fix

    Configure RHEL 10 so that "nftables" is the default "firewallbackend" for "firewalld" by adding or editing the following line in "/etc/firewalld/firewalld.conf": FirewallBackend=nftables Establish rate-limiting rules based on organization-defined types of DoS attacks on impacted network interfaces.

  396. RHEL-10-800300 CAT II V-281362 · SRG-OS-000420-GPOS-00186

    RHEL 10 must configure a DNS processing mode in Network Manager to avoid conflicts with other Domain Name Server (DNS) managers and to not leak DNS queries to untrusted networks.

    Maps to SC-5 via CCI-002385, CCI-001115
    Check

    Verify RHEL 10 has a DNS mode configured in Network Manager. $ NetworkManager --print-config [main] dns=none If the dns key under "main" does not exist or is set to "dnsmasq", this is a finding. Note: If RHEL 10 is configured to use a DNS resolver other than Network Manager, the configuration must be documented and approved by the information system security officer.

    Fix

    Configure RHEL 10 to use a DNS mode in Network Manager. In "/etc/NetworkManager/NetworkManager.conf", add the following line in the "[main]" section: dns = none Where is default, none, or systemd-resolved. Network Manager must be reloaded for the change to take effect: $ sudo systemctl reload NetworkManager

  397. RHEL-10-800310 CAT II V-281363 · SRG-OS-000074-GPOS-00042

    RHEL 10 must be configured to operate in secure mode if the Trivial File Transfer Protocol (TFTP) server service is required.

    Maps to IA-5(1) via CCI-000197
    Check

    Note: If a TFTP server is not installed, this rule is not applicable. Verify RHEL 10 is configured to operate in secure mode if the TFTP server service is required. Determine if the TFTP server is installed with the following command: $ sudo dnf list installed | grep tftp-server tftp-server.x86_64 5.2-48.el10 @rhel-10-for-x86_64-appstream-rpms Verify that the TFTP daemon, if "tftp.server" is installed, is configured to operate in secure mode with the following command: $ systemctl cat tftp.service | grep -i execstart ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot Note: The "-s" option ensures that the TFTP server serves only files from the specified directory, which is a security measure to prevent unauthorized access to other parts of the file system. If the TFTP server is installed, but the TFTP daemon is not configured to operate in secure mode, and tftp is not documented as critical to the mission with the information system security officer, this is a finding.

    Fix

    Configure RHEL 10 TFTP to operate in secure mode with the following command: $ sudo systemctl edit tftp.service In the editor, enter the following: [Service] ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot After making changes, reload the systemd daemon and restart the TFTP service as follows: $ sudo systemctl daemon-reload $ sudo systemctl restart tftp.service

  398. RHEL-10-900000 CAT II V-281364 · SRG-OS-000063-GPOS-00032

    RHEL 10 must enforce mode "0640" or less for the "/etc/audit/auditd.conf" file to prevent unauthorized access.

    Maps to AU-12 via CCI-000171
    Check

    Verify RHEL 10 enforces the mode of "/etc/audit/auditd.conf" with the following command: $ sudo stat -c "%a %n" /etc/audit/auditd.conf 640 /etc/audit/auditd.conf If "/etc/audit/auditd.conf" does not have a mode of "0640", this is a finding.

    Fix

    Configure RHEL 10 to set the mode of the "/etc/audit/auditd.conf" file to "0640" with the following command: $ sudo chmod 0640 /etc/audit/auditd.conf

  399. RHEL-10-900100 CAT II V-281365 · SRG-OS-000057-GPOS-00027

    RHEL 10 must prevent unauthorized changes to the audit system.

    Maps to AU-9 via CCI-000162, CCI-000163, CCI-000164
    Check

    Verify the RHEL 10 audit system prevents unauthorized changes with the following command: $ sudo grep "^\s*[^#]" /etc/audit/audit.rules | tail -1 -e 2 If the audit system is not set to be immutable by adding the "-e 2" option to the end of "/etc/audit/audit.rules", this is a finding.

    Fix

    Configure RHEL 10 to protect the audit system from unauthorized changes. Set the audit rules to be immutable by adding the following line to end of "/etc/audit/rules.d/audit.rules": -e 2 Restart the audit daemon with the following command for the changes to take effect: $ sudo service auditd restart