{"stig":{"title":"Red Hat Enterprise Linux 10 Security Technical Implementation Guide","version":"1","release":"1"},"checks":[{"vulnId":"V-280094","ruleId":"SV-280094r1184607_rule","severity":"medium","ruleTitle":"RHEL 10 must disable the debug-shell systemd service.","description":"The debug-shell requires no authentication and provides root privileges to anyone who has physical access to the machine. While this feature is disabled by default, masking it adds an additional layer of assurance that it will not be enabled via a dependency in systemd. This also prevents attackers with physical access from trivially bypassing security on the machine through valid troubleshooting configurations and gaining root access when the system is rebooted.","checkContent":"Verify RHEL 10 is configured to mask the debug-shell systemd service with the following command:\n\n$ sudo systemctl status debug-shell.service\no debug-shell.service\n        Loaded: masked (Reason: Unit debug-shell.service is masked.)\n        Active: inactive (dead)\n\nIf the \"debug-shell.service\" is loaded and not masked, this is a finding.","fixText":"Configure RHEL 10 to mask the debug-shell systemd service with the following command:\n\n$ sudo systemctl disable --now debug-shell.service\n$ sudo systemctl mask --now debug-shell.service","ccis":["CCI-002235"]},{"vulnId":"V-280931","ruleId":"SV-280931r1197213_rule","severity":"medium","ruleTitle":"RHEL 10 must ensure cryptographic verification of vendor software packages.","description":"Cryptographic verification of vendor software packages ensures that all software packages are obtained from a valid source and protects against spoofing that could lead to installation of malware on the system. Red Hat cryptographically signs all software packages, including updates, with a GNU Privacy Guard (GPG) key to verify that they are valid.","checkContent":"Verify RHEL 10 ensures cryptographic verification of vendor software packages.\n\nConfirm Red Hat package-signing keys are installed on the system and verify their fingerprints match vendor values.\n\nNote: 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.\n\nList Red Hat GPG keys installed on the system:\n\n$ sudo rpm -q --queryformat \"%{SUMMARY}\\n\" gpg-pubkey | grep -i \"red hat\"\nRed Hat, Inc. (release key 2) <security@redhat.com> public key\nRed Hat, Inc. (auxiliary key 3) <security@redhat.com> public key\nRed Hat, Inc. (release key 4) <security@redhat.com> public key\n\nIf 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.\n\nList key fingerprints of installed Red Hat GPG keys:\n\n$ sq inspect /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release\n/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: OpenPGP Certificate.\n\n      Fingerprint: 567E347AD0044ADE55BA8A5F199E2F91FD431D51\n  Public-key algo: RSA\n  Public-key size: 4096 bits\n    Creation time: 2009-10-22 11:59:55 UTC\n        Key flags: certification, signing\n\n           UserID: Red Hat, Inc. (release key 2) <security@redhat.com>\n\nNote: There is another block of armored OpenPGP data.\nNote: This is a non-standard extension to OpenPGP.\n\n/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: OpenPGP Certificate.\n\n      Fingerprint: 7E4624258C406535D56D6F135054E4A45A6340B3\n  Public-key algo: RSA\n  Public-key size: 4096 bits\n    Creation time: 2022-03-09 21:56:46 UTC\n        Key flags: certification, signing\n\n           UserID: Red Hat, Inc. (auxiliary key 3) <security@redhat.com>\n\nNote: There is another block of armored OpenPGP data.\nNote: This is a non-standard extension to OpenPGP.\n\n/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: OpenPGP Certificate.\n\n      Fingerprint: FCD355B305707A62DA143AB6E422397E50FE8467A2A95343D246D6276AFEDF8F\n  Public-key algo: ML-DSA-87+Ed448\n    Creation time: 2025-10-08 17:40:03 UTC\n        Key flags: certification, signing\n\n           UserID: Red Hat, Inc. (release key 4) <security@redhat.com>\n\nCompare 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.\n\nIf key fingerprints do not match, this is a finding.","fixText":"Configure RHEL 10 to ensure cryptographic verification of vendor software packages.\n\nInstall Red Hat package-signing keys on the system and verify their fingerprints match vendor values.\n\nInsert 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.\n\nAssuming the mounted location is \"/media/cdrom\", use the following command to copy the Red Hat GPG key file onto the system:\n\n$ sudo cp /media/cdrom/RPM-GPG-KEY-redhat-release /etc/pki/rpm-gpg/\n\nImport Red Hat GPG keys from the key file into the system keyring:\n\n$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release\n\nUsing 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.","ccis":["CCI-003992"]},{"vulnId":"V-280932","ruleId":"SV-280932r1197215_rule","severity":"high","ruleTitle":"RHEL 10 must check the GNU Privacy Guard (GPG) signature of software packages originating from external software repositories before installation.","description":"Changes to any software components can have significant effects on the overall security of the operating system. This requirement ensures the software has not been tampered with and has been provided by a trusted vendor.\n\nAll software packages must be signed with a cryptographic key recognized and approved by the organization.\n\nVerifying the authenticity of software prior to installation validates the integrity of the software package received from a vendor.","checkContent":"Verify RHEL 10 dnf always checks the GPG signature of software packages originating from external software repositories before installation with the following command:\n\n$ sudo grep -w gpgcheck /etc/dnf/dnf.conf\ngpgcheck=1\n\nIf \"gpgcheck\" is not set to \"1\", or if the option is missing or commented out, ask the system administrator how the GPG signatures of software packages are being verified.\n\nIf no process to verify GPG signatures has been approved by the organization, this is a finding.","fixText":"Configure RHEL 10 dnf to always check the GPG signature of software packages originating from external software repositories before installation.\n\nAdd or update the following line in the [main] section of the \"/etc/dnf/dnf.conf\" file:\n\ngpgcheck=1","ccis":["CCI-003992"]},{"vulnId":"V-280933","ruleId":"SV-280933r1197217_rule","severity":"high","ruleTitle":"RHEL 10 must check the GNU Privacy Guard (GPG) signature of locally installed software packages before installation.","description":"Changes to any software components can have significant effects on the overall security of the operating system. This requirement ensures the software has not been tampered with and that it has been provided by a trusted vendor.\n\nAll software packages must be signed with a cryptographic key recognized and approved by the organization.\n\nVerifying the authenticity of software prior to installation validates the integrity of the software package received from a vendor.","checkContent":"Verify RHEL 10 dnf always checks the GPG signature of locally installed software packages before installation with the following command:\n\n$ sudo grep localpkg_gpgcheck /etc/dnf/dnf.conf\nlocalpkg_gpgcheck=1\n\nIf \"localpkg_gpgcheck\" is not set to \"1\", or if the option is missing or commented out, ask the system administrator how the GPG signatures of local software packages are being verified.\n\nIf no process to verify GPG signatures has been approved by the organization, this is a finding.","fixText":"Configure RHEL 10 dnf to always check the GPG signature of local software packages before installation.\n\nAdd or update the following line in the [main] section of the \"/etc/dnf/dnf.conf\" file:\n\nlocalpkg_gpgcheck=1","ccis":["CCI-003992"]},{"vulnId":"V-280934","ruleId":"SV-280934r1165157_rule","severity":"high","ruleTitle":"RHEL 10 must have GNU Privacy Guard (GPG) signature verification enabled for all software repositories.","description":"Changes to any software components can have significant effects on the overall security of the operating system. This requirement ensures the software has not been tampered with and has been provided by a trusted vendor.\n\nAll software packages must be signed with a cryptographic key recognized and approved by the organization.\n\nVerifying the authenticity of software prior to installation validates the integrity of the software package received from a vendor.","checkContent":"Verify RHEL 10 software repositories defined in \"/etc/yum.repos.d/\" have been configured with \"gpgcheck\" enabled with the following command:\n\n$ sudo grep -w gpgcheck /etc/yum.repos.d/*.repo | more\ngpgcheck = 1\n\nIf \"localpkg_gpgcheck\" is not set to \"1\", or if the option is missing or commented out, ask the system administrator how the GPG signatures of local software packages are being verified.\n\nIf no process to verify GPG signatures has been approved by the organization, this is a finding.","fixText":"Configure RHEL 10 software repositories defined in \"/etc/yum.repos.d/\" to have \"gpgcheck\" enabled with the following command:\n\n$ sudo sed -i 's/gpgcheck\\s*=.*/gpgcheck=1/g' /etc/yum.repos.d/*","ccis":["CCI-003992"]},{"vulnId":"V-280935","ruleId":"SV-280935r1184775_rule","severity":"high","ruleTitle":"RHEL 10 must implement cryptographic mechanisms to prevent unauthorized disclosure or modification of all information on local disk partitions that requires at-rest protection.","description":"RHEL 10 systems handling data that requires \"data-at-rest\" protections must employ cryptographic mechanisms to prevent unauthorized disclosure and modification of the information at rest.\n\nSelection of a cryptographic mechanism is based on the need to protect the integrity of organizational information. The strength of the mechanism is commensurate with the security category and/or classification of the information. Organizations have the flexibility to either encrypt all information on storage devices (i.e., full disk encryption) or encrypt specific data structures (e.g., files, records, or fields).\n\nSatisfies: SRG-OS-000405-GPOS-00184, SRG-OS-000185-GPOS-00079, SRG-OS-000404-GPOS-00183","checkContent":"Note: If there is a documented and approved reason for not having data-at-rest encryption at the operating system level, such as encryption provided by a hypervisor or a disk storage array in a virtualized environment, this requirement is not applicable.\n\nVerify RHEL 10 prevents unauthorized disclosure or modification of all information requiring at-rest protection by using disk encryption.\n\nList all block devices in tree-like format:\n\n$ sudo lsblk --tree\nNAME                                            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS\nsda                                               8:0    0   64G  0 disk\n+-sda1                                            8:1    0  600M  0 part  /boot/efi\n+-sda2                                            8:2    0    1G  0 part  /boot\n+-sda3                                            8:3    0 62.4G  0 part\n  +-rhel-root                                   253:0    0   23G  0 lvm\n  ¦ +-luks-9f886368-bf3e-4d17-86ed-a71dd6571bb4 253:2    0   23G  0 crypt /\n  +-rhel-swap                                   253:1    0  6.4G  0 lvm   [SWAP]\n  +-rhel-var_tmp                                253:3    0    3G  0 lvm\n  ¦ +-luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b 253:14   0    3G  0 crypt /var/tmp\n  +-rhel-var_log_audit                          253:4    0   10G  0 lvm\n  ¦ +-luks-4e45e1ad-5337-42c4-a19f-ee12ccc1d502 253:9    0   10G  0 crypt /var/log/audit\n  +-rhel-tmp                                    253:5    0    2G  0 lvm\n  ¦ +-luks-2d7e1b45-73c4-4282-8838-15a897e0d04e 253:11   0    2G  0 crypt /tmp\n  +-rhel-home                                   253:6    0   10G  0 lvm\n  ¦ +-luks-ca2261ed-7b00-4b7b-84cd-8cd6d8fa4b28 253:12   0   10G  0 crypt /home\n  +-rhel-var                                    253:7    0    5G  0 lvm\n  ¦ +-luks-51150299-f295-4145-b8f0-ebe9c6dfd5a0 253:13   0    5G  0 crypt /var\n  +-rhel-var_log                                253:8    0    3G  0 lvm\n    +-luks-c651f493-9fdc-4c6e-a711-0a4f03149661 253:10   0    3G  0 crypt /var/log\n\nVerify that the block device tree for each persistent filesystem, excluding the /boot and /boot/efi filesystems, has at least one parent block device of type \"crypt\" and that the encryption type is LUKS:\n\n$ sudo cryptsetup status luks-9f886368-bf3e-4d17-86ed-a71dd6571bb4\n/dev/mapper/luks-9f886368-bf3e-4d17-86ed-a71dd6571bb4 is active and is in use.\n  type:    LUKS2\n  cipher:  aes-xts-plain64\n  keysize: 512 bits\n  key location: keyring\n  device:  /dev/mapper/rhel-root\n  sector size:  512\n  offset:  32768 sectors\n  size:    48201728 sectors\n  mode:    read/write\n  flags:   discards\n\nIf there are persistent filesystems (other than /boot or /boot/efi) whose block device trees do not have a crypt block device of type LUKS, ask the administrator to indicate how persistent filesystems are encrypted.\n\nIf there is no evidence that persistent filesystems are encrypted, this is a finding.","fixText":"Configure RHEL 10 to prevent unauthorized modification of all information at rest by using disk encryption.\n\nEncrypting a partition in an already installed system is more difficult, because existing partitions will have to be resized and changed.\n\nTo encrypt an entire partition, dedicate a partition for encryption in the partition layout.","ccis":["CCI-002476","CCI-001199","CCI-002475"]},{"vulnId":"V-280936","ruleId":"SV-280936r1184726_rule","severity":"low","ruleTitle":"RHEL 10 must use a separate file system for the system audit data path.","description":"Placing \"/var/log/audit\" in its own partition enables better separation between audit files and other system files and helps ensure that auditing cannot be halted due to the partition running out of space.","checkContent":"Verify RHEL 10 uses a separate file system/partition for the system audit data path with the following command:\n\nNote: /var/log/audit is used as the example as it is a common location.\n\n$ mount | grep /var/log/audit\n/dev/mapper/rootvg-varlogaudit on /var/log/audit type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\nNote: Options displayed for mount may differ.\n\nIf no line is returned, this is a finding.","fixText":"Configure RHEL 10 to use a separate file system for the system audit data path by migrating \"/var/log/audit\" onto a separate file system.","ccis":["CCI-001849"]},{"vulnId":"V-280937","ruleId":"SV-280937r1184727_rule","severity":"medium","ruleTitle":"RHEL 10 must use a separate file system for user home directories (such as \"/home\" or an equivalent).","description":"Ensuring that \"/home\" is mounted on its own partition enables the setting of more restrictive mount options and helps ensure that users cannot trivially fill partitions used for log or audit data storage.","checkContent":"Verify RHEL 10 uses a separate file system/partition for \"/home\" with the following command:\n\n$ mount | grep /home\n/dev/mapper/luks-ca2261ed-7b00-4b7b-84cd-8cd6d8fa4b28 on /home type xfs (rw,nodev,nosuid,noexec,seclabel)\nNote: Options displayed for mount may differ.\n\nIf a separate entry for \"/home\" is not in use, this is a finding.","fixText":"Configure RHEL 10 to use a separate file system for user home directories by migrating the \"/home\" directory onto a separate file system/partition.","ccis":["CCI-002385"]},{"vulnId":"V-280938","ruleId":"SV-280938r1184728_rule","severity":"medium","ruleTitle":"RHEL 10 must use a separate file system for \"/tmp\".","description":"The \"/tmp\" partition is used as temporary storage by many programs. Placing \"/tmp\" in its own partition enables the setting of more restrictive mount options, which can help protect programs that use it.","checkContent":"Verify RHEL 10 uses a separate file system/partition for \"/tmp\" with the following command:\n\n$ mount | grep /tmp\n/dev/mapper/luks-2d7e1b45-73c4-4282-8838-15a897e0d04e on /tmp type xfs(rw,nodev,nosuid,noexec,seclabel)\n\nNote: Options displayed for mount may differ.\n\nIf a separate entry for \"/tmp\" is not in use, this is a finding.","fixText":"Configure RHEL 10 to use a separate file system for temporary storage directories by migrating the \"/tmp\" path onto a separate file system.","ccis":["CCI-002385"]},{"vulnId":"V-280939","ruleId":"SV-280939r1184729_rule","severity":"medium","ruleTitle":"RHEL 10 must use a separate file system for \"/var\".","description":"Ensuring that \"/var\" is mounted on its own partition enables the setting of more restrictive mount options. This helps protect system services such as daemons or other programs that use it. It is not uncommon for the \"/var\" directory to contain world-writable directories installed by other software packages.","checkContent":"Verify RHEL 10 uses a separate file system/partition for \"/var\" with the following command:\n\n$ mount | grep /var\n/dev/mapper/luks-51150299-f295-4145-b8f0-ebe9c6dfd5a0 on /var type xfs (rw,nodev,relatime,seclabel,attr2)\nNote: Options displayed for mount may differ.\n\nIf a separate entry for \"/var\" is not in use, this is a finding.","fixText":"Configure RHEL 10 to use a separate file system for the \"/var\" directory by migrating the \"/var\" path onto a separate file system.","ccis":["CCI-002385"]},{"vulnId":"V-280940","ruleId":"SV-280940r1184730_rule","severity":"medium","ruleTitle":"RHEL 10 must use a separate file system for \"/var/log\".","description":"Placing \"/var/log\" in its own partition enables better separation between log files and other files in \"/var/\".","checkContent":"Verify RHEL 10 uses a separate file system/partition for \"/var/log\" with the following command:\n\n$ mount | grep /var/log\n/dev/mapper/luks-c651f493-9fdc-4c6e-a711-0a4f03149661 on /var/log type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2)\nNote: Options displayed for mount may differ.\n\nIf a separate entry for \"/var/log\" is not in use, this is a finding.","fixText":"Configure RHEL 10 to use a separate file system for log file directories by migrating the \"/var/log\" path onto a separate file system.","ccis":["CCI-002385"]},{"vulnId":"V-280941","ruleId":"SV-280941r1184731_rule","severity":"medium","ruleTitle":"RHEL 10 must use a separate file system for \"/var/tmp\".","description":"The \"/var/tmp\" partition is used as temporary storage by many programs. Placing \"/var/tmp\" in its own partition enables the setting of more restrictive mount options, which can help protect programs that use it.","checkContent":"Verify RHEL 10 uses a separate file system/partition for \"/var/tmp\" with the following command:\n\n$ mount | grep /var/tmp\n/dev/mapper/luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2)\nNote: Options displayed for mount may differ.\n\nIf a separate entry for \"/var/tmp\" is not in use, this is a finding.","fixText":"Configure RHEL 10 to use a separate file system for the \"/var/tmp\" path by migrating \"/var/tmp\" onto a separate file system.","ccis":["CCI-002385"]},{"vulnId":"V-280942","ruleId":"SV-280942r1165181_rule","severity":"medium","ruleTitle":"RHEL 10 must remove all software components after updated versions have been installed.","description":"Previous versions of software components that are not removed from the information system after updates have been installed may be exploited by some adversaries.","checkContent":"Verify RHEL 10 removes all software components after updated versions have been installed with the following command:\n\n$ sudo grep -i clean_requirements_on_remove /etc/dnf/dnf.conf\nclean_requirements_on_remove=True\n\nIf \"clean_requirements_on_remove\" is not set to \"True\", this is a finding.","fixText":"Configure RHEL 10 to remove all software components after updated versions have been installed.\n\nEdit the file \"/etc/dnf/dnf.conf\" by adding or editing the following line:\n\n clean_requirements_on_remove=True","ccis":["CCI-002617"]},{"vulnId":"V-280943","ruleId":"SV-280943r1165184_rule","severity":"medium","ruleTitle":"RHEL 10 must not have the \"nfs-utils\" package installed.","description":"The \"nfs-utils\" package provides a daemon for the kernel Network File System (NFS) server and related tools. This package also contains the \"showmount\" program. The \"showmount\" program queries the mount daemon on a remote host for information about the NFS server on the remote host. For example, \"showmount\" can display the clients that are mounted on that host.","checkContent":"Verify RHEL 10 does not have the \"nfs-utils\" package installed with the following command:\n\n$ sudo dnf list --installed nfs-utils\nError: No matching Packages to list\n\nIf the \"nfs-utils\" package is installed, this is a finding.","fixText":"Configure RHEL 10 to not have the \"nfs-utils\" package installed with the following command:\n\n$ sudo dnf -y remove nfs-utils","ccis":["CCI-000381"]},{"vulnId":"V-280944","ruleId":"SV-280944r1184749_rule","severity":"high","ruleTitle":"RHEL 10 must not have the \"telnet-server\" package installed.","description":"It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities are often overlooked and therefore, may remain unsecure. They increase the risk to the platform by providing additional attack vectors.\n\nThe telnet service provides an unencrypted remote access service, which does not provide for the confidentiality and integrity of user passwords or the remote session. If a privileged user were to log in using this service, the privileged user password could be compromised.\n\nRemoving the \"telnet-server\" package decreases the risk of accidental (or intentional) activation of the telnet service.","checkContent":"Verify RHEL 10 does not have the \"telnet-server\" package installed with the following command:\n\n$ sudo dnf list --installed telnet-server\nError: No matching Packages to list\n\nIf the \"telnet-server\" package is installed, this is a finding.","fixText":"Configure RHEL 10 to not have the \"telnet-server\" package installed with the following command:\n\n$ sudo dnf -y remove telnet-server","ccis":["CCI-000381"]},{"vulnId":"V-280945","ruleId":"SV-280945r1184750_rule","severity":"medium","ruleTitle":"RHEL 10 must not have the \"gssproxy\" package installed.","description":"It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore, may remain unsecured. They increase the risk to the platform by providing additional attack vectors.\n\nOperating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations (e.g., key missions, functions).\n\nThe gssproxy package is a proxy for GSS API credential handling and could expose secrets on some networks. It is not needed for normal function of the operating system.","checkContent":"Note: If Network File System (NFS) mounts are authorized and in use on the system, this control is not applicable.\n\nVerify RHEL 10 does not have the \"gssproxy\" package installed with the following command:\n\n$ sudo dnf list --installed gssproxy\nError: No matching Packages to list\n\nIf the \"gssproxy\" package is installed and is not documented with the information system security officer as an operational requirement, this is a finding.","fixText":"Configure RHEL 10 to not have the \"gssproxy\" package installed with the following command:\n\n$ sudo dnf -y remove gssproxy","ccis":["CCI-000381"]},{"vulnId":"V-280946","ruleId":"SV-280946r1184751_rule","severity":"medium","ruleTitle":"RHEL 10 must not have the tuned package installed.","description":"It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore, may remain unsecured. They increase the risk to the platform by providing additional attack vectors.\n\nOperating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions).\n\nThe tuned package contains a daemon that tunes the system settings dynamically. It does so by monitoring the usage of several system components periodically. Based on that information, components will then be put into lower or higher power savings modes to adapt to the current usage. The tuned package is not needed for normal operating system operations.","checkContent":"Verify RHEL 10 does not have the tuned package installed with the following command:\n\n$ sudo dnf list --installed tuned\nError: No matching Packages to list\n\nIf the \"tuned\" package is installed and is not documented with the information system security officer as an operational requirement, this is a finding.","fixText":"Configure RHEL 10 to not have the tuned package installed with the following command:\n\n$ sudo dnf -y remove tuned","ccis":["CCI-000381"]},{"vulnId":"V-280947","ruleId":"SV-280947r1165196_rule","severity":"medium","ruleTitle":"RHEL 10 must not have a Trivial File Transfer Protocol (TFTP) server package installed unless it is required by the mission, and if required, the TFTP daemon must be configured to operate in secure mode.","description":"Removing the \"tftp-server\" package decreases the risk of the accidental (or intentional) activation of TFTP services.\n\nIf TFTP is required for operational support (such as transmission of router configurations), its use must be documented with the information systems security manager (ISSM), restricted to only authorized personnel, and have access control rules established.\n\nRestricting TFTP to a specific directory prevents remote users from copying, transferring, or overwriting system files.","checkContent":"Note: If TFTP is not required, it must not be installed. If TFTP is not installed, this rule is not applicable.\n\nVerify RHEL 10 is configured so that TFTP operates in secure mode if installed.\n\nDetermine if TFTP server is installed with the following command:\n\n$ sudo dnf list --installed | grep tftp-server\ntftp-server.x86_64                                   5.2-48.el10                     @rhel-10-for-x86_64-appstream-rpms\n\nIf the TFTP server package is installed and is not required, or if it is not documented with the ISSM, this is a finding.\n\nVerify the TFTP daemon, if tftp.server is installed, is configured to operate in secure mode with the following command:\n\n$ grep -i execstart /usr/lib/systemd/system/tftp.service\nExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot\n\nNote: The \"-s\" option ensures the TFTP server only serves files from the specified directory, which is a security measure to prevent unauthorized access to other parts of the file system.\n\nIf the \"-s\" option is not present in the \"ExecStart\" line, or if the line is missing, this is a finding.","fixText":"Configure RHEL 10 so that TFTP operates in secure mode if installed.\n\nIf TFTP server is not required, remove it with the following command:\n\n$ sudo dnf -y remove tftp-server\n\nConfigure the TFTP daemon to operate in secure mode with the following command:\n\n$ sudo systemctl edit tftp.service\n\nIn the editor, enter:\n\n[Service]\nExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot\n\nAfter making changes, reload the systemd daemon and restart the TFTP service as follows:\n\n$ sudo systemctl daemon-reload\n$ sudo systemctl restart tftp.service","ccis":["CCI-000381"]},{"vulnId":"V-280948","ruleId":"SV-280948r1197218_rule","severity":"medium","ruleTitle":"RHEL 10 must not have the unbound package installed.","description":"If the system is not a Domain Name Server (DNS), it should not have a DNS server package installed to decrease the attack surface of the system.","checkContent":"Verify RHEL 10 does not have a DNS package installed with the following command:\n\n$ sudo dnf list --installed unbound\nError: No matching Packages to list\n\nIf the \"unbound\" package is installed, and the information system security officer lacks a documented requirement for a DNS, this is a finding.","fixText":"Configure RHEL 10 to not have the unbound package installed with the following command:\n\n$ sudo dnf -y remove unbound","ccis":["CCI-000381"]},{"vulnId":"V-280949","ruleId":"SV-280949r1195338_rule","severity":"high","ruleTitle":"RHEL 10 must not have the \"tftp\" package installed.","description":"It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities are often overlooked and therefore, may remain unsecure. They increase the risk to the platform by providing additional attack vectors.\n\nIf Trivial File Transfer Protocol (TFTP) is required for operational support (such as transmission of router configurations), its use must be documented with the information system security manager, restricted to only authorized personnel, and have access control rules established.","checkContent":"Verify RHEL 10 does not have the \"tftp\" package installed with the following command:\n\n$ sudo dnf list --installed tftp\nError: No matching Packages to list\n\nIf the \"tftp\" package is installed, this is a finding.","fixText":"Configure RHEL 10 to not have the \"tftp\" package installed with the following command:\n\n$ sudo dnf -y remove tftp","ccis":["CCI-000197"]},{"vulnId":"V-280950","ruleId":"SV-280950r1165205_rule","severity":"medium","ruleTitle":"RHEL 10 must not have the \"gdm\" package installed.","description":"Unnecessary service packages must not be installed to decrease the attack surface of the system. A graphical environment is unnecessary for certain types of systems including a virtualization hypervisor.","checkContent":"Verify RHEL 10 does not have the \"gdm\" package installed with the following command:\n\n$ sudo dnf list --installed gdm\nError: No matching Packages to list\n\nIf 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.","fixText":"Configure RHEL 10 to not have the \"gdm\" package installed with the following command:\n\n$ sudo dnf -y remove gdm","ccis":["CCI-000381"]},{"vulnId":"V-280951","ruleId":"SV-280951r1184744_rule","severity":"high","ruleTitle":"RHEL 10 must not have a File Transfer Protocol (FTP) server package installed.","description":"The FTP service provides an unencrypted remote access that does not provide for the confidentiality and integrity of user passwords or the remote session. If a privileged user were to log in using this service, the privileged user password could be compromised. Secure Shell (SSH) or other encrypted file transfer methods must be used in place of this service.\n\nRemoving the \"vsftpd\" package decreases the risk of accidental activation.\n\nSatisfies: SRG-OS-000074-GPOS-00042, SRG-OS-000095-GPOS-00049","checkContent":"Verify RHEL 10 does not have an FTP server package installed with the following command:\n\n$ sudo dnf list --installed vsftp\nError: No matching Packages to list\n\nIf the \"vsftp\" package is installed, this is a finding.","fixText":"Configure RHEL 10 to not have the FTP package installed with the following command (using \"vsftpd\" as an example):\n\n$ sudo dnf -y remove vsftpd","ccis":["CCI-000197","CCI-000381"]},{"vulnId":"V-280952","ruleId":"SV-280952r1195340_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"subscription-manager\" package installed.","description":"The Red Hat Subscription Manager application manages software subscriptions and software repositories for installed software products on the local system. It communicates with backend servers, such as the Red Hat Customer Portal or an on-premise instance of Subscription Asset Manager, to register the local system and grant access to software resources determined by the subscription entitlement.","checkContent":"Note: If the system is not an internet connected system, this requirement is not applicable.\n\nVerify RHEL 10 has the \"subscription-manager\" package installed with the following command:\n\n$ sudo dnf list --installed subscription-manager\nInstalled Packages\nsubscription-manager.x86_64                      1.30.6.1-1.el10_0                       @rhel-10-for-x86_64-baseos-rpms\n\nIf the \"subscription-manager\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"subscription-manager\" package installed with the following command:\n\n$ sudo dnf -y install subscription-manager","ccis":["CCI-003992"]},{"vulnId":"V-280953","ruleId":"SV-280953r1195342_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"nss-tools\" package installed.","description":"Network Security Services (NSS) is a set of libraries designed to support cross-platform development of security-enabled client and server applications. Install the \"nss-tools\" package to install command-line tools to manipulate the NSS certificate and key database.","checkContent":"Verify RHEL 10 has the \"nss-tools\" package installed with the following command:\n\n$ sudo dnf list --installed nss-tools\nInstalled Packages\nnss-tools.x86_64                           3.112.0-4.el10_0                           @rhel-10-for-x86_64-appstream-rpms\n\nIf the \"nss-tools\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"nss-tools\" package installed with the following command:\n\n$ sudo dnf -y install nss-tools","ccis":["CCI-000381"]},{"vulnId":"V-280954","ruleId":"SV-280954r1195344_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"s-nail\" package installed.","description":"The \"s-nail\" package provides the mail command required to allow sending email notifications of unauthorized configuration changes to designated personnel.","checkContent":"Verify RHEL 10 is configured to allow sending email notifications.\n\nVerify the \"s-nail\" package is installed on the system with the following command:\n\n$ sudo dnf list --installed s-nail\nInstalled Packages\ns-nail.x86_64                             14.9.24-12.el10                             @rhel-10-for-x86_64-appstream-rpms\n\nIf the \"s-nail\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"s-nail\" package installed with the following command:\n\n$ sudo dnf -y install s-nail","ccis":["CCI-001744"]},{"vulnId":"V-280955","ruleId":"SV-280955r1197220_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"firewalld\" package installed.","description":"The \"firewalld\" package provides an easy and effective way to block/limit remote access to the system via ports, services, and protocols.\n\nRemote access services, such as those providing remote access to network devices and information systems, that lack automated control capabilities increase risk and make remote user access management difficult at best.\n\nRemote access is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganizational-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nRHEL 10 functionality (e.g., Secure Shell [SSH]) must be capable of taking enforcement action if the audit reveals unauthorized activity. Automated control of remote access sessions allows organizations to ensure ongoing compliance with remote access policies by enforcing connection rules of remote access applications on a variety of information system components (e.g., servers, workstations, notebook computers, smartphones, and tablets).\n\nSatisfies: SRG-OS-000096-GPOS-00050, SRG-OS-000297-GPOS-00115, SRG-OS-000298-GPOS-00116, SRG-OS-000480-GPOS-00232","checkContent":"Verify RHEL 10 has the \"firewalld\" package installed.\n\nRun the following command to determine if the \"firewalld\" package is installed:\n\nInstalled Packages\nfirewalld.noarch                             2.3.1-1.el10_0                              @rhel-10-for-x86_64-baseos-rpms\n\nIf the \"firewall\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"firewalld\" package installed with the following command:\n\n$ sudo dnf -y install firewalld","ccis":["CCI-000382","CCI-002314","CCI-002322"]},{"vulnId":"V-280956","ruleId":"SV-280956r1165223_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"firewalld\" service set to active.","description":"\"Firewalld\" provides an easy and effective way to block/limit remote access to the system via ports, services, and protocols.\n\nRemote access services, such as those providing remote access to network devices and information systems, which lack automated control capabilities, increase risk and make remote user access management difficult at best.\n\nRemote access is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nRHEL 10 functionality (e.g., Remote Desktop Protocol [RDP]) must be capable of taking enforcement action if the audit reveals unauthorized activity. Automated control of remote access sessions allows organizations to ensure ongoing compliance with remote access policies by enforcing connection rules of remote access applications on a variety of information system components (e.g., servers, workstations, notebook computers, smartphones, and tablets).\n\nSatisfies: SRG-OS-000096-GPOS-00050, SRG-OS-000297-GPOS-00115, SRG-OS-000480-GPOS-00232","checkContent":"Verify RHEL 10 is configured so that \"firewalld\" is active with the following command:\n\n$ systemctl is-active firewalld\nactive\n\nIf the \"firewalld\" service is not active, this is a finding.","fixText":"Configure RHEL 10 to have the \"firewalld\" service set to active.\n\nTo enable the \"firewalld\" service, run the following command:\n\n$ sudo systemctl enable --now firewalld","ccis":["CCI-000382","CCI-002314"]},{"vulnId":"V-280957","ruleId":"SV-280957r1165226_rule","severity":"medium","ruleTitle":"RHEL 10 must employ a deny-all, allow-by-exception policy for allowing connections to other systems.","description":"Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DOD data.\n\nRHEL 10 incorporates the \"firewalld\" daemon, which allows for many different configurations. One of these configurations is zones. Zones can be used in a deny-all, allow-by-exception approach. The default \"drop\" zone will drop all incoming network packets unless it is explicitly allowed by the configuration file or is related to an outgoing network connection.","checkContent":"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):\n\n$ sudo  firewall-cmd --state\nrunning\n\n$ sudo firewall-cmd --get-active-zones\ndrop (default)\n   interfaces: ens33\n\n$  sudo firewall-cmd --info-zone=drop | grep target\n  target: DROP\n\n$ sudo firewall-cmd --permanent --info-zone=drop | grep target\n   target: DROP\n\nIf 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.\n\nVerify the permanent configuration is valid and there are no misconfigured zones or rules with the following command:\n\n$ sudo firewall-cmd --check-config\nsuccess\n\nIf this command does not return \"success\", this is a finding.","fixText":"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):\n\nStart 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: \n\n$ sudo firewall-cmd --permanent --add-service=ssh --zone=drop\n\nReload the firewall rules to update the runtime configuration from the \"--permanent\" changes made above:\n\n$ sudo firewall-cmd --reload\n\nSet the default zone to the drop zone:\n\n$ sudo firewall-cmd --set-default-zone=drop\nNote: This is a runtime and permanent change.\n\nAdd any interfaces to the newly modified \"drop\" zone:\n\n$ sudo firewall-cmd --permanent --zone=drop --change-interface=ens33\n\nReload the firewall rules for changes to take effect:\n\n$ sudo firewall-cmd --reload","ccis":["CCI-002314"]},{"vulnId":"V-280958","ruleId":"SV-280958r1195348_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"chrony\" package installed.","description":"Inaccurate time stamps make it more difficult to correlate events and can lead to an inaccurate analysis. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events. Sources outside the configured acceptable allowance (drift) may be inaccurate.","checkContent":"Verify RHEL 10 has the \"chrony\" package installed with the following command:\n\n$ sudo dnf list --installed chrony\nInstalled Packages\nchrony.x86_64                                           4.6.1-1.el10                                           @anaconda\n\nIf the \"chrony\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"chrony\" package installed with the following command:\n\n$ sudo dnf -y install chrony","ccis":["CCI-004923"]},{"vulnId":"V-280959","ruleId":"SV-280959r1165232_rule","severity":"medium","ruleTitle":"RHEL 10 must enable the chronyd service.","description":"Inaccurate time stamps make it more difficult to correlate events and can lead to an inaccurate analysis. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events. Sources outside the configured acceptable allowance (drift) may be inaccurate.\n\nSynchronizing internal information system clocks provides uniformity of time stamps for information systems with multiple system clocks and systems connected over a network.","checkContent":"Verify RHEL 10 sets the chronyd service to active with the following command:\n\n$ systemctl is-active chronyd\nactive\n\nIf the chronyd service is not active, this is a finding.","fixText":"Configure RHEL 10 to enable the chronyd service with the following command:\n\n$ sudo systemctl enable --now chronyd","ccis":["CCI-004923"]},{"vulnId":"V-280960","ruleId":"SV-280960r1165235_rule","severity":"medium","ruleTitle":"RHEL 10 must disable the chrony daemon from acting as a server.","description":"Minimizing the exposure of the server functionality of the chrony daemon diminishes the attack surface.\n\nSatisfies: SRG-OS-000096-GPOS-00050, SRG-OS-000095-GPOS-00049","checkContent":"Verify RHEL 10 disables the chrony daemon from acting as a server with the following command:\n\n$ sudo grep -w port /etc/chrony.conf\nport 0\n\nIf the \"port\" option is not set to \"0\", is commented out, or is missing, this is a finding.","fixText":"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:\n\nport 0\n\nRestart the chronyd service with the following command for the changes to take effect:\n\n$ sudo systemctl restart chronyd","ccis":["CCI-000382","CCI-000381"]},{"vulnId":"V-280961","ruleId":"SV-280961r1165238_rule","severity":"medium","ruleTitle":"RHEL 10 must disable network management of the chrony daemon.","description":"Not exposing the management interface of the chrony daemon on the network diminishes the attack space.\n\nSatisfies: SRG-OS-000096-GPOS-00050, SRG-OS-000095-GPOS-00049","checkContent":"Verify RHEL 10 disables network management of the chrony daemon with the following command:\n\n$ sudo grep -w cmdport /etc/chrony.conf\ncmdport 0\n\nIf the \"cmdport\" option is not set to \"0\", is commented out, or is missing, this is a finding.","fixText":"Configure RHEL 10 to disable network management of the chrony daemon by adding/modifying the following line in the \"/etc/chrony.conf\" file:\n\ncmdport 0\n\nRestart the chronyd service with the following command for the changes to take effect:\n\n$ sudo systemctl restart chronyd","ccis":["CCI-000382","CCI-000381"]},{"vulnId":"V-280962","ruleId":"SV-280962r1195350_rule","severity":"medium","ruleTitle":"RHEL 10 must have the USBGuard package installed.","description":"The USBGuard-daemon is the main component of the USBGuard software framework. It runs as a service in the background and enforces the USB device authorization policy for all USB devices. The policy is defined by a set of rules using a rule language described in the \"usbguard-rules.conf\" file. The policy and the authorization state of USB devices can be modified during runtime using the USBGuard tool.\n\nThe system administrator (SA) must work with the site information system security officer (ISSO) to determine a list of authorized peripherals and establish rules within the USBGuard software framework to allow only authorized devices.","checkContent":"Verify RHEL 10 has USBGuard installed on the operating system with the following command:\n\n$ sudo dnf list --installed usbguard\nInstalled Packages\nusbguard.x86_64                             1.1.3-6.el10                              @rhel-10-for-x86_64-appstream-rpms\n\nIf the USBGuard package is not installed, ask the SA to indicate how unauthorized peripherals are being blocked.\n\nIf there is no evidence that unauthorized peripherals are being blocked before establishing a connection, this is a finding.\n\nIf the system is a virtual machine with no virtual or physical USB peripherals attached, this is not a finding.","fixText":"Configure RHEL 10 to have the USBGuard package installed with the following command:\n\n$ sudo dnf -y install usbguard\n\nEnable the service to start on boot and then start it with the following commands:\n\n$ sudo systemctl enable usbguard\n$ sudo systemctl start usbguard\n\nVerify the status of the service with the following command:\n\n$ sudo systemctl status usbguard\n\nNote: USBGuard must be configured to allow authorized devices once it is enabled on RHEL 10.","ccis":["CCI-001958"]},{"vulnId":"V-280963","ruleId":"SV-280963r1165244_rule","severity":"medium","ruleTitle":"RHEL 10 must have the USBGuard package enabled.","description":"The USBGuard-daemon is the main component of the USBGuard software framework. It runs as a service in the background and enforces the USB device authorization policy for all USB devices. The policy is defined by a set of rules using a rule language described in the \"usbguard-rules.conf\" file. The policy and the authorization state of USB devices can be modified during runtime using the USBGuard tool.\n\nThe system administrator (SA) must work with the site information system security officer (ISSO) to determine a list of authorized peripherals and establish rules within the USBGuard software framework to allow only authorized devices.\n\nSatisfies: SRG-OS-000378-GPOS-00163, SRG-OS-000690-GPOS-00140","checkContent":"Note: If the system is virtual machine with no virtual or physical USB peripherals attached, this is not applicable.\n\nVerify RHEL 10 has USBGuard enabled with the following command:\n\n$ systemctl is-active usbguard\nactive\n\nIf USBGuard is not active, ask the SA to indicate how unauthorized peripherals are being blocked.\n\nIf there is no evidence that unauthorized peripherals are being blocked before establishing a connection, this is a finding.","fixText":"Configure RHEL 10 to have the USBGuard service enabled by running the following command:\n\n$ sudo systemctl enable --now usbguard","ccis":["CCI-001958","CCI-003959"]},{"vulnId":"V-280964","ruleId":"SV-280964r1165247_rule","severity":"medium","ruleTitle":"RHEL 10 must block unauthorized peripherals before establishing a connection.","description":"The USBGuard-daemon is the main component of the USBGuard software framework. It runs as a service in the background and enforces the USB device authorization policy for all USB devices. The policy is defined by a set of rules using a rule language described in the \"usbguard-rules.conf\" file. The policy and the authorization state of USB devices can be modified during runtime using the usbguard tool.\n\nThe system administrator (SA) must work with the site information system security officer (ISSO) to determine a list of authorized peripherals and establish rules within the USBGuard software framework to allow only authorized devices.","checkContent":"Note: If the system is virtual machine with no virtual or physical USB peripherals attached, this is not applicable.\n\nVerify RHEL 10 USBGuard has a policy configured.\n\nConfirm the setting with the following command:\n\n$ sudo usbguard list-rules\nallow id 1d6b:0001 serial\n\nIf the command does not return results, or an error is returned, ask the SA to indicate how unauthorized peripherals are being blocked.\n\nIf there is no evidence that unauthorized peripherals are being blocked before establishing a connection, this is a finding.","fixText":"Configure RHEL 10 to enable the blocking of unauthorized peripherals with the following command:\n\nNote: This command must be run from a root shell and will create an allowlist for any USB devices currently connected to the system.\n\n# usbguard generate-policy --no-hash > /etc/usbguard/rules.conf\n\nNote: 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.","ccis":["CCI-001958"]},{"vulnId":"V-280965","ruleId":"SV-280965r1165250_rule","severity":"medium","ruleTitle":"RHEL 10 must enable audit logging for the USBGuard daemon.","description":"Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nIf auditing is enabled late in the startup process, the actions of some startup processes may not be audited. Some audit systems also maintain state information only available if auditing is enabled before a given process is created.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nThe list of audited events is the set of events for which audits are to be generated. This set of events is typically a subset of the list of all events for which the system is capable of generating audit records.\n\nDOD has defined the list of events for which RHEL 10 will provide an audit record generation capability as the following:\n\n1) Successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels).\n\n2) Access actions, such as successful and unsuccessful login attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logins from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system.\n\n3) All account creations, modifications, disabling, and terminations.\n\n4) All kernel module load, unload, and restart actions.\n\nSatisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000471-GPOS-00215","checkContent":"Note: If the system is a virtual machine with no virtual or physical USB peripherals attached, this is not applicable.\n\nVerify RHEL 10 audit logging is enabled for the USBGuard daemon. \n\nConfirm the setting with the following command:\n\n$ sudo grep AuditBackend /etc/usbguard/usbguard-daemon.conf\nAuditBackend=LinuxAudit\n\nIf \"AuditBackend\" is not set to \"LinuxAudit\", this is a finding.","fixText":"Configure RHEL 10 USBGuard AuditBackend to use the audit system.\n\nAdd or edit the following line in \"/etc/usbguard/usbguard-daemon.conf\":\n\nAuditBackend=LinuxAudit","ccis":["CCI-000169","CCI-000172"]},{"vulnId":"V-280966","ruleId":"SV-280966r1195352_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"policycoreutils\" package installed.","description":"Without verification of the security functions, security functions may not operate correctly and the failure may go unnoticed. Security function is defined as the hardware, software, and/or firmware of the information system responsible for enforcing the system security policy and supporting the isolation of code and data on which the protection is based. \n\nSecurity functionality includes, but is not limited to, establishing system accounts, configuring access authorizations (i.e., permissions, privileges), setting events to be audited, and setting intrusion detection parameters.\n\nThe \"policycoreutils\" package contains the policy core utilities that are required for basic operation of an SELinux-enabled system. These utilities include \"load_policy\" to load SELinux policies, \"setfile\" to label filesystems, \"newrole\" to switch roles, and \"run_init\" to run \"/etc/init.d\" scripts in the proper context.","checkContent":"Verify RHEL 10 has the \"policycoreutils\" package installed with the following command:\n\n$ sudo dnf list --installed policycoreutils\nInstalled Packages\npolicycoreutils.x86_64                                       3.8-1.el10                                        @anaconda\n\nIf the \"policycoreutils\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"policycoreutils\" package installed with the following command:\n\n$ sudo dnf -y install policycoreutils","ccis":["CCI-001084"]},{"vulnId":"V-280967","ruleId":"SV-280967r1195354_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"policycoreutils-python-utils\" package installed.","description":"The \"policycoreutils-python-utils\" package is required to operate and manage an SELinux environment and its policies. It provides utilities such as \"semanage\", \"audit2allow\", \"audit2why\", \"chcat\", and \"sandbox\".","checkContent":"Verify RHEL 10 has the \"policycoreutils-python-utils\" service package installed with the following command:\n\n$ sudo dnf list --installed policycoreutils-python-utils\nInstalled Packages\npolicycoreutils-python-utils.noarch                                3.8-1.el10                                 @AppStream\n\nIf the \"policycoreutils-python-utils\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"policycoreutils-python-utils\" service package installed with the following command:\n\n$ sudo dnf -y install policycoreutils-python-utils","ccis":["CCI-000381"]},{"vulnId":"V-280968","ruleId":"SV-280968r1195356_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"sudo\" package installed.","description":"The \"sudo\" package is a program designed to allow a system administrator to give limited root privileges to users and log root activity. The basic philosophy is to give as few privileges as possible but still allow system users to complete their work.","checkContent":"Verify RHEL 10 has the \"sudo\" package installed with the following command:\n\n$ sudo dnf list --installed sudo\nInstalled Packages\nsudo.x86_64                             1.9.15-8.p5.el10_0.2                             @rhel-10-for-x86_64-baseos-rpms\n\nIf the \"sudo\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"sudo\" package installed with the following command:\n\n$ sudo dnf -y install sudo","ccis":["CCI-002235"]},{"vulnId":"V-280969","ruleId":"SV-280969r1195358_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"fapolicy\" module installed.","description":"The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as allowlisting.\n\nUsing an allowlist provides a configuration management method for allowing the execution of only authorized software. Using only authorized software decreases risk by limiting the number of potential vulnerabilities. Verification of allowlisted software occurs prior to execution or at system startup.\n\nUser home directories/folders may contain information of a sensitive nature. Nonprivileged users should coordinate any sharing of information with a system administrator through shared resources.\n\nRHEL 10 ships with many optional packages. One such package is a file access policy daemon called \"fapolicyd\". This is a userspace daemon that determines access rights to files based on attributes of the process and file. It can be used to either blocklist or allowlist processes or file access.\n\nProceed with caution with enforcing the use of this daemon. Improper configuration may render the system nonfunctional. The \"fapolicyd\" API is not namespace aware and can cause issues when launching or running containers.\n\nSatisfies: SRG-OS-000370-GPOS-00155, SRG-OS-000368-GPOS-00154","checkContent":"Verify RHEL 10 has the \"fapolicyd\" package installed with the following command:\n\n$ sudo dnf list --installed fapolicyd\nInstalled Packages\nfapolicyd.x86_64                            1.3.3-102.el10                            @rhel-10-for-x86_64-appstream-rpms\n\nIf the \"fapolicyd\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"fapolicyd\" package installed with the following command:\n\n$ sudo dnf -y install fapolicyd","ccis":["CCI-001774","CCI-001764"]},{"vulnId":"V-280970","ruleId":"SV-280970r1165265_rule","severity":"medium","ruleTitle":"RHEL 10 must enable the \"fapolicy\" module.","description":"The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as allowlisting.\n\nUsing an allowlist provides a configuration management method for allowing the execution of only authorized software. Using only authorized software decreases risk by limiting the number of potential vulnerabilities. Verification of allowlisted software occurs prior to execution or at system startup.\n\nUser home directories/folders may contain information of a sensitive nature. Nonprivileged users should coordinate any sharing of information with a system administrator through shared resources.\n\nRHEL 10 ships with many optional packages. One such package is a file access policy daemon called \"fapolicyd\". The \"fapolicyd\" is a userspace daemon that determines access rights to files based on attributes of the process and file. It can be used to either blocklist or allowlist processes or file access.\n\nProceed with caution with enforcing the use of this daemon. Improper configuration may render the system nonfunctional. The \"fapolicyd\" application programming interface (API) is not namespace aware and can cause issues when launching or running containers.\n\nSatisfies: SRG-OS-000370-GPOS-00155, SRG-OS-000368-GPOS-00154","checkContent":"Verify RHEL 10 \"fapolicyd\" is active with the following command:\n\n$ systemctl is-active fapolicyd\nactive\n\nIf the \"fapolicyd\" module is not active, this is a finding.","fixText":"Configure RHEL 10 to enable \"fapolicyd\" with the following command:\n\n$ systemctl enable --now fapolicyd","ccis":["CCI-001774","CCI-001764"]},{"vulnId":"V-280971","ruleId":"SV-280971r1184780_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured to employ a deny-all, permit-by-exception policy to allow the execution of authorized software programs.","description":"The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as allowlisting.\n\nUsing an allowlist provides a configuration management method for allowing the execution of only authorized software. Using only authorized software decreases risk by limiting the number of potential vulnerabilities. Verification of allowlisted software occurs prior to execution or at system startup.\n\nUser home directories/folders may contain information of a sensitive nature. Nonprivileged users should coordinate any sharing of information with a system administrator through shared resources.\n\nRHEL 10 ships with many optional packages. One such package is a file access policy daemon called \"fapolicyd\". The \"fapolicyd\" is a userspace daemon that determines access rights to files based on attributes of the process and file. It can be used to either block list or allowlist processes or file access.\n\nProceed with caution with enforcing the use of this daemon. Improper configuration may render the system nonfunctional. The \"fapolicyd\" application programming interface (API) is not namespace aware and can cause issues when launching or running containers.\n\nSatisfies: SRG-OS-000368-GPOS-00154, SRG-OS-000370-GPOS-00155","checkContent":"Verify the RHEL 10 \"fapolicyd\" employs a deny-all, permit-by-exception policy.\n\nCheck that \"fapolicyd\" is in enforcement mode with the following command:\n\n$ sudo grep permissive /etc/fapolicyd/fapolicyd.conf\n\npermissive = 0\n\nIf \"fapolicyd\" is not running in enforcement mode, this is a finding.\n\nCheck that \"fapolicyd\" employs a deny-all policy on system mounts with the following commands:\n\n$ sudo tail /etc/fapolicyd/compiled.rules\n\nallow exe=/usr/bin/python3.7 : ftype=text/x-python\ndeny_audit perm=any pattern=ld_so : all\ndeny perm=any all : all\n\nIf \"fapolicyd\" is not running with a deny-all, permit-by-exception policy, this is a finding.\n\nNote: \"deny_log\" or \"deny_audit\" options meet the security requirements. These options will generate higher volumes of logs.","fixText":"Configure RHEL 10 to employ a deny-all, permit-by-exception application allow listing policy with \"fapolicyd\".\n\nWith 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:\n\npermissive = 1\n\nBuild 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\".\n\nOnce 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.\n\npermissive = 0","ccis":["CCI-001764","CCI-001774"]},{"vulnId":"V-280972","ruleId":"SV-280972r1195360_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"pcsc-lite\" package installed.","description":"The \"pcsc-lite\" package must be installed if it is to be available for multifactor authentication using smart cards.","checkContent":"Note: If the system administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable.\n\nVerify RHEL 10 has the \"pcsc-lite\" package installed with the following command:\n\n$ sudo dnf list --installed pcsc-lite\nInstalled Packages\npcsc-lite.x86_64                                         2.2.3-2.el10                                          @anaconda\n\nIf the \"pcsc-lite\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"pcsc-lite\" package installed with the following command:\n\n$ sudo dnf -y install pcsc-lite","ccis":["CCI-004046"]},{"vulnId":"V-280973","ruleId":"SV-280973r1165274_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"pcscd\" service set to active.","description":"The information system ensures that even if it is compromised, that compromise will not affect credentials stored on the authentication device.\n\nThe daemon program for \"pcsc-lite\" and the MuscleCard framework is \"pcscd\". It is a resource manager that coordinates communications with smart card readers, smart cards, and cryptographic tokens that are connected to the system.","checkContent":"Verify RHEL 10 has the \"pcscd\" socket set to active with the following command:\n\n$ systemctl is-active pcscd.socket\nactive\n\nIf the \"pcscd\" socket is not active, this is a finding.","fixText":"Configure RHEL 10 to have the \"pcscd\" socket set to active with the following command:\n\n$ sudo systemctl enable --now pcscd.socket","ccis":["CCI-004046"]},{"vulnId":"V-280974","ruleId":"SV-280974r1195362_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"pcsc-lite-ccid\" package installed.","description":"The \"pcsc-lite-ccid\" package must be installed if it is to be available for multifactor authentication using smart cards.","checkContent":"Verify RHEL 10 has the \"pcsc-lite-ccid\" package installed with the following command:\n\n$ sudo dnf list --installed pcsc-lite-ccid\nInstalled Packages\npcsc-lite-ccid.x86_64                                       1.6.0-2.el10                                       @anaconda\n\nIf the \"pcsc-lite-ccid\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"pcsc-lite-ccid\" package installed with the following command:\n\n$ sudo dnf -y install pcsc-lite-ccid","ccis":["CCI-004046"]},{"vulnId":"V-280975","ruleId":"SV-280975r1195364_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"opensc\" package installed.","description":"The use of Personal Identity Verification (PIV) credentials facilitates standardization and reduces the risk of unauthorized access.\n\nThe DOD has mandated the use of the common access card (CAC) to support identity management and personal authentication for systems covered under Homeland Security Presidential Directive (HSPD) 12, as well as making the CAC a primary component of layered protection for national security systems.\n\nSatisfies: SRG-OS-000375-GPOS-00160, SRG-OS-000376-GPOS-00161","checkContent":"Verify RHEL 10 has the \"opensc\" package installed with the following command:\n\n$ sudo dnf list --installed opensc\nInstalled Packages\nopensc.x86_64                               0.26.1-1.el10                                @rhel-10-for-x86_64-baseos-rpm\n\nIf the \"opensc\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"opensc\" package installed with the following command:\n\n$ sudo dnf -y install opensc","ccis":["CCI-004046","CCI-001953"]},{"vulnId":"V-280976","ruleId":"SV-280976r1165283_rule","severity":"medium","ruleTitle":"RHEL 10 must use the common access card (CAC) smart card driver.","description":"Smart card login provides two-factor authentication stronger than that provided by a username and password combination. Smart cards leverage public key infrastructure to provide and verify credentials. Configuring the smart card driver helps to prevent the use of unauthorized smart cards.\n\nSatisfies: SRG-OS-000104-GPOS-00051, SRG-OS-000106-GPOS-00053, SRG-OS-000107-GPOS-00054, SRG-OS-000109-GPOS-00056, SRG-OS-000108-GPOS-00055","checkContent":"Verify RHEL 10 loads the CAC driver with the following command:\n\n$ sudo opensc-tool --get-conf-entry app:default:card_drivers\ncac\n\nIf \"cac\" is not listed as a card driver, or no line is returned for \"card_drivers\", this is a finding.","fixText":"Configure RHEL 10 to load the CAC driver:\n\n$ sudo opensc-tool --set-conf-entry app:default:card_drivers:cac\n\nRestart the pcscd service with the following command for the changes to take effect:\n\n$ sudo systemctl restart pcscd","ccis":["CCI-000764","CCI-000766","CCI-000765","CCI-004045"]},{"vulnId":"V-280977","ruleId":"SV-280977r1195366_rule","severity":"medium","ruleTitle":"RHEL 10 must have the Advanced Intrusion Detection Environment (AIDE) package installed.","description":"Without verification of the security functions, security functions may not operate correctly, and the failure may go unnoticed. Security function is defined as the hardware, software, and/or firmware of the information system responsible for enforcing the system security policy and supporting the isolation of code and data on which the protection is based. \n\nSecurity functionality includes, but is not limited to, establishing system accounts, configuring access authorizations (e.g., permissions, privileges), setting events to be audited, and setting intrusion detection parameters.","checkContent":"Verify RHEL 10 has the AIDE package installed with the following command:\n\n$ sudo dnf list --installed aide\nInstalled Packages\naide.x86_64                             0.18.6-8.el10_0.2                             @rhel-10-for-x86_64-appstream-rpms\n\nIf AIDE is not installed, ask the system administrator how file integrity checks are performed on the system.\n\nIf no application is installed to perform integrity checks, this is a finding.\n\nIf AIDE is installed, determine if it has been initialized with the following command:\n\n$ sudo /usr/sbin/aide --check\n\nIf the output is \"Couldn't open file /var/lib/aide/aide.db.gz for reading\", this is a finding.","fixText":"Configure RHEL 10 so that \"AIDE\" is installed and initialized, and then perform a manual check.\n\nInstall AIDE:\n\n$ sudo dnf -y install aide\n\nInitialize AIDE:\n\n$ sudo /usr/sbin/aide --init\n\nExample output:\n\nStart timestamp: 2025-04-03 10:09:04 -0600 (AIDE 0.16)\nAIDE initialized database at /var/lib/aide/aide.db.new.gz\n\nNumber of entries:      86833\n\n---------------------------------------------------\nThe attributes of the (uncompressed) database(s):\n---------------------------------------------------\n\n/var/lib/aide/aide.db.new.gz\n  MD5      : coZUtPHhoFoeD7+k54fUvQ==\n  SHA1     : DVpOEMWJwo0uPgrKZAygIUgSxeM=\n  SHA256   : EQiZH0XNEk001tcDmJa+5STFEjDb4MPE\n             TGdBJ/uvZKc=\n  SHA512   : 86KUqw++PZhoPK0SZvT3zuFq9yu9nnPP\n             toei0nENVELJ1LPurjoMlRig6q69VR8l\n             +44EwO9eYyy9nnbzQsfG1g==\n\nEnd timestamp: 2025-04-03 10:09:57 -0600 (run time: 0m 53s)\n\nThe new database must be renamed to be read by AIDE:\n\n$ sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz\n\nPerform a manual check:\n\n$ sudo /usr/sbin/aide --check\n\nExample output:\n\n2025-04-03 10:16:08 -0600 (AIDE 0.16)\nAIDE found NO differences between database and filesystem. Looks okay!!\n\n...","ccis":["CCI-002696"]},{"vulnId":"V-280978","ruleId":"SV-280978r1165289_rule","severity":"high","ruleTitle":"RHEL 10 must use cryptographic mechanisms to protect the integrity of audit tools.","description":"Protecting the integrity of the tools used for auditing purposes is a critical step toward ensuring the integrity of audit information. Audit information includes all information (e.g., audit records, audit settings, and audit reports) needed to successfully audit information system activity.\n\nAudit tools include, but are not limited to, vendor-provided and open-source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators.\n\nIt is not uncommon for attackers to replace the audit tools or inject code into the existing tools to provide the capability to hide or erase system activity from the audit logs.\n\nTo address this risk, audit tools must be cryptographically signed to provide the capability to identify when the audit tools have been modified, manipulated, or replaced. An example is a checksum hash of the file or files.","checkContent":"Verify RHEL 10 Advanced Intrusion Detection Environment (AIDE) is properly configured to protect the integrity of the audit tools.\n\nVerify the explicit rules for the audit tools with the following command:\n\n$ sudo grep /usr/sbin/au /etc/aide.conf\n/usr/sbin/auditctl p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/auditd p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/augenrules p+i+n+u+g+s+b+acl+xattrs+sha512\n\nIf AIDE is not installed, ask the system administrator (SA) how file integrity checks are performed on the system.\n\nIf any of the audit tools listed above do not have a corresponding line, ask the SA to indicate what cryptographic mechanisms are being used to protect the integrity of the audit tools.\n\nIf there is no evidence of integrity protection, this is a finding.","fixText":"Configure RHEL 10 to use cryptographic mechanisms to protect the integrity of audit tools.\n\nAdd or update the following lines to \"/etc/aide.conf\" to protect the integrity of the audit tools.\n\n/usr/sbin/auditctl p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/auditd p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/augenrules p+i+n+u+g+s+b+acl+xattrs+sha512","ccis":["CCI-001496"]},{"vulnId":"V-280979","ruleId":"SV-280979r1165292_rule","severity":"medium","ruleTitle":"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.","description":"RHEL 10 installation media ships with an optional file integrity tool called Advanced Intrusion Detection Environment (AIDE). AIDE is highly configurable at install time. This requirement assumes the \"aide.conf\" file is under the \"/etc\" directory.\n\nFile integrity tools use cryptographic hashes for verifying that file contents and directories have not been altered. These hashes must be FIPS 140-3-approved cryptographic hashes.","checkContent":"Verify RHEL 10 AIDE is configured to use FIPS 140-3 file hashing.\n\nVerify global default hash settings with the following command:\n\n$ sudo grep -iE 'sha|md5|rmd' /etc/aide.conf | grep -v ^#\nFIPSR = p+i+n+u+g+s+m+ftype+growing+acl+selinux+xattrs+sha512\nALLXTRAHASHES = sha512\n/usr/sbin/auditctl p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/auditd p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/augenrules p+i+n+u+g+s+b+acl+xattrs+sha512\nNORMAL = FIPSR+sha512\nLSPP = FIPSR+sha512\nDATAONLY =  R+sha512\n/etc/gshadow  NORMAL\n/etc/shadow   NORMAL\n\nIf any hashes other than \"sha512\" are present, this is a finding.\n\nConfirm no legacy hashes exist with the following command:\n\n$ sudo grep -iE 'md5|sha1|whirlpool|tiger' /etc/aide.conf | grep -v ^#\n\nIf any uncommented lines are returned, this is a finding.","fixText":"Configure RHEL 10 so that the file integrity tool uses FIPS 140-3 cryptographic hashes for validating file and directory contents.\n\nIf AIDE is installed, ensure the \"sha512\" rule is present on all uncommented file and directory selection lists, and that no legacy hashes exist. \n\nBy default, AIDE excludes log files such as \"/var/log\" and other volatile files to reduce unnecessary notifications.","ccis":["CCI-002475"]},{"vulnId":"V-280980","ruleId":"SV-280980r1165295_rule","severity":"medium","ruleTitle":"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.","description":"Unauthorized changes to the baseline configuration could make the system vulnerable to various attacks or allow unauthorized access to the operating system. Changes to operating system configurations can have unintended side effects, some of which may be relevant to security.\n\nDetecting such changes and providing an automated response can help avoid unintended, negative consequences that could ultimately affect the security state of the operating system. The operating system's information management officer (IMO)/information system security officer (ISSO) and system administrators (SAs) must be notified via email and/or monitoring system trap when there is an unauthorized modification of a configuration item.\n\nNotifications provided by information systems include messages to local computer consoles and/or hardware indications such as lights.\n\nThis capability must take into account operational requirements for availability for selecting an appropriate response. The organization may choose to shut down or restart the information system upon security function anomaly detection.\n\nSatisfies: SRG-OS-000363-GPOS-00150, SRG-OS-000446-GPOS-00200, SRG-OS-000447-GPOS-00201","checkContent":"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.\n\nCheck 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:\n\n$ sudo ls -al /etc/cron.* | grep aide\n-rwxr-xr-x 1 root root 29 Nov 22 2015 aide\n\n$ sudo grep aide /etc/crontab /var/spool/cron/root\n/etc/crontab: 30 04 * * * root usr/sbin/aide\n/var/spool/cron/root: 30 04 * * * root usr/sbin/aide\n\n$ sudo more /etc/cron.daily/aide\n#!/bin/bash\n/usr/sbin/aide --check | /bin/mail -s \"$HOSTNAME - Daily aide integrity check run\" root@sysname.mil\n\nIf 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.","fixText":"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. \n\nThe AIDE tool can be configured to email designated personnel with the use of the cron system.\n\nThe following example output is generic. It will set cron to run AIDE daily and to send email at the completion of the analysis:\n\n$ sudo more /etc/cron.daily/aide\n\n#!/bin/bash\n/usr/sbin/aide --check | /bin/mail -s \"$HOSTNAME - Daily aide integrity check run\" root@sysname.mil","ccis":["CCI-001744","CCI-002699","CCI-002702"]},{"vulnId":"V-280981","ruleId":"SV-280981r1165298_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the file integrity tool verifies Access Control Lists (ACLs).","description":"RHEL 10 installation media ships with an optional file integrity tool called Advanced Intrusion Detection Environment (AIDE). AIDE is highly configurable at install time. This requirement assumes the \"aide.conf\" file is under the \"/etc\" directory.\n\nACLs can provide permissions beyond those permitted through the file mode and must be verified by the file integrity tools.","checkContent":"Verify RHEL 10 AIDE is verifying ACLs.\n\nVerify ACL settings for all uncommented file and directory selection lists with the following command:\n\n$ sudo grep -E '^[^#]*acl' /etc/aide.conf\nFIPSR = p+i+n+u+g+s+m+growing+acl+selinux+xattrs+sha512\n/usr/sbin/auditctl p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/auditd p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/augenrules p+i+n+u+g+s+b+acl+xattrs+sha512\nDIR = p+i+n+u+g+acl+selinux+xattrs\nPERMS = p+i+u+g+acl+selinux\n\nOpen the file and verify no additional uncommented file and directory selection lines are missing the \"acl\" rule.\n\nIf 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.","fixText":"Configure RHEL 10 so that the file integrity tool checks file and directory ACLs.\n\nIf AIDE is installed, ensure the \"acl\" rule is present on all uncommented file and directory selection lists.","ccis":["CCI-002475"]},{"vulnId":"V-280982","ruleId":"SV-280982r1165301_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the file integrity tool verifies extended attributes.","description":"RHEL 10 installation media ships with an optional file integrity tool called Advanced Intrusion Detection Environment (AIDE). AIDE is highly configurable at install time. This requirement assumes the \"aide.conf\" file is under the \"/etc\" directory.\n\nExtended attributes in file systems are used to contain arbitrary data and file metadata with security implications.","checkContent":"Verify RHEL 10 AIDE is configured to verify extended attributes with the following command:\n\n$ sudo grep -E '^[^#]*xattrs' /etc/aide.conf\nFIPSR = p+i+n+u+g+s+m+growing+acl+selinux+xattrs+sha512\n/usr/sbin/auditctl p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/auditd p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/augenrules p+i+n+u+g+s+b+acl+xattrs+sha512\nDIR = p+i+n+u+g+acl+selinux+xattrs\n\nOpen the file and verify that no additional uncommented file and directory selection lines are missing the \"xattrs\" rule.\n\nIf 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.","fixText":"Configure RHEL 10 so that the file integrity tool checks file and directory extended attributes.\n\nIf AIDE is installed, ensure the \"xattrs\" rule is present on all uncommented file and directory selection lists.","ccis":["CCI-002475"]},{"vulnId":"V-280983","ruleId":"SV-280983r1195368_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"rsyslog\" package installed.","description":"The \"rsyslogd\" is a system utility providing support for message logging. Support for both internet and Unix domain sockets enables this utility to support local and remote logging. Couple this utility with \"gnutls\" (which is a secure communications library implementing the Secure Sockets Layer [SSL], Transport Layer Security [TLS], and Datagram TLS [DTLS] protocols), to create a method to securely encrypt and off-load auditing.\n\nSatisfies: SRG-OS-000479-GPOS-00224, SRG-OS-000051-GPOS-00024","checkContent":"Verify RHEL 10 has the \"rsyslogd\" package installed with the following command:\n\n$ sudo dnf list --installed rsyslog\nInstalled Packages\nrsyslog.x86_64                                        8.2412.0-1.el10                                         @AppStream\n\nIf the \"rsyslogd\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"rsyslogd\" package installed with the following command:\n\n$ sudo dnf -y install rsyslogd","ccis":["CCI-001851","CCI-000154"]},{"vulnId":"V-280984","ruleId":"SV-280984r1165307_rule","severity":"medium","ruleTitle":"RHEL 10 must have the rsyslog service set to active.","description":"The rsyslog service must be running to provide logging services, which are essential to system administration.","checkContent":"Verify RHEL 10 rsyslog is active with the following command:\n\n$ systemctl is-active rsyslog\nactive\n\nIf the rsyslog service is not active, this is a finding.","fixText":"Configure RHEL 10 to enable the rsyslog service with the following command:\n\n$ sudo systemctl enable --now rsyslog","ccis":["CCI-000133"]},{"vulnId":"V-280985","ruleId":"SV-280985r1197221_rule","severity":"medium","ruleTitle":"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.","description":"Information stored in one location is vulnerable to accidental or incidental deletion or alteration.\n\nOff-loading is a common process in information systems with limited audit storage capacity.\n\nRHEL 10 installation media provides \"rsyslogd\", a system utility providing support for message logging. Support for both internet and Unix domain sockets enables this utility to support both local and remote logging. Coupling this utility with \"gnutls\" (a secure communications library implementing the Secure Sockets Layer [SSL], Transport Layer Security [TLS], and Datagram TLS [DTLS] protocols) creates a method to securely encrypt and off-load auditing.\n\nThe rsyslog provides three ways to forward message: the traditional User Datagram Protocol (UDP) transport, which is extremely lossy but standard; the plain TCP-based transport, which loses messages only during certain situations but is widely available; and the Reliable Event Logging Protocol (RELP) transport, which does not lose messages but is currently available only as part of the rsyslogd 3.15.0 and above.\n\nExamples of each configuration:\n\nUDP *.* @remotesystemname\nTCP *.* @@remotesystemname\nRELP *.* :omrelp:remotesystemname:2514\n\nNote that a port number was given as there is no standard port for RELP.","checkContent":"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:\n\nTo check for legacy configuration syntax, perform the following:\n\n$ sudo grep -ir '@@' /etc/rsyslog.conf /etc/rsyslog.d/\n\nTo check for Rainer script syntax, perform the following:\n\n$ sudo grep -rq 'type=\"omfwd\"' /etc/rsyslog.conf /etc/rsyslog.d/\n\nIf 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. \n\nIf there is no evidence that the audit logs are being off-loaded to another system or media, this is a finding.","fixText":"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.\n\nUsing legacy \"@host:port\" syntax example:\n*.* @@[remoteloggingserver]:[port]\n\nUsing Rainer script example:\naction(\n    type=\"omfwd\"\n    target=\"logserver.example.com\"\n    port=\"514\"\n    protocol=\"tcp\"\n    action.resumeRetryCount=\"-1\"\n    queue.type=\"linkedList\"\n    que.size=\"10000\"\n)\n\nNote: The Rainer script above does not contain the required encryption settings.","ccis":["CCI-001851"]},{"vulnId":"V-280986","ruleId":"SV-280986r1184782_rule","severity":"medium","ruleTitle":"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.","description":"Unintentionally running a rsyslog server accepting remote messages puts the system at increased risk. Malicious rsyslog messages sent to the server could exploit vulnerabilities in the server software, introduce misleading information into the system's logs, or fill the system's storage, leading to a denial of service.\n\nIf the system is intended to be a log aggregation server, its use must be documented with the information system security officer.","checkContent":"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.\n\nVerify RHEL 10 is not configured to receive remote logs using rsyslog.\n\nVerify the setting with the following commands:\n\n$ ss -tulnp | grep rsyslog\n\nIf no output is returned, rsyslog is not listening for remote logs.\n\nIf output appears, check for configured ports (514 is the default for syslog).\n\nCheck for remote logging configuration in rsyslog by examining the rsyslog configuration files:\n\n$ sudo grep -E 'InputTCPServerRun|UDPServerRun|RELPServerRun|imtcp|imudp|imrelp' /etc/rsyslog.conf /etc/rsyslog.d/*\n\nIf 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.\n\nNote: 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.","fixText":"Configure RHEL 10 to not receive remote logs using rsyslog.\n\nRemove the lines in \"/etc/rsyslog.conf\" and any files in the \"/etc/rsyslog.d\" directory that match any of the following:\n\nInputTCPServerRun\nUDPServerRun\nRELPServerRun\nmodule(load=\"imtcp\")\nmodule(load=\"imudp\")\nmodule(load=\"imrelp\")\ninput(type=\"imudp\" port=\"514\")\ninput(type=\"imtcp\" port=\"514\")\ninput(type=\"imrelp\" port=\"514\")\n\nRestart the rsyslog daemon with the following command for the changes to take effect:\n\n$ sudo systemctl restart rsyslog.service","ccis":["CCI-002385"]},{"vulnId":"V-280987","ruleId":"SV-280987r1195371_rule","severity":"medium","ruleTitle":"RHEL 10 must authenticate the remote logging server for off-loading audit logs via \"rsyslog\".","description":"Information stored in one location is vulnerable to accidental or incidental deletion or alteration.\n\nOff-loading is a common process in information systems with limited audit storage capacity.\n\nRHEL 10 installation media provides \"rsyslogd\", a system utility providing support for message logging. Support for both internet and Unix domain sockets enables this utility to support both local and remote logging. Coupling this utility with \"gnutls\" (a secure communications library implementing the Secure Sockets Layer (SSL), Transport Layer Security (TLS), and Datagram TLS (DTLS) protocols) creates a method to securely encrypt and off-load auditing.\n\nThe \"rsyslog\" supported authentication modes include:\n- anon - Anonymous authentication.\n- x509/fingerprint - Certificate fingerprint authentication.\n- x509/certvalid - Certificate validation only.\n- x509/name - Certificate validation and subject name authentication.\n\nSatisfies: SRG-OS-000342-GPOS-00133, SRG-OS-000479-GPOS-00224","checkContent":"Verify RHEL 10 authenticates the remote logging server for off-loading audit logs with the following command:\n\n$ sudo grep -r -E 'streamdriver.authmode|streamdriver.permittedpeer|tls.authmode|tls.permittedpeer' /etc/rsyslog.conf /etc/rsyslog.d/\n/etc/rsyslog.d/99-forwarding.conf:        streamdriver.authmode=\"x509/name\"\n\nIf 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.\n\nIf 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.\n\nAdditionally, if the permittedpeer is not specified in either of the following formats, this is a finding:\nstreamdriver.permittedpeer=\"rsyslog.server.example.com\"\ntls.permittedpeer=\"rsyslog.server.example.com\"\n\nIf 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.","fixText":"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\":\n\nstreamdriver.authmode=\"x509/name\"\n\nSpecify the logserver to prevent man-in-the-middle attacks in the following format:\nstreamdriver.permittedpeer=\"rsyslog.server.example.com\"","ccis":["CCI-001851"]},{"vulnId":"V-280988","ruleId":"SV-280988r1195374_rule","severity":"medium","ruleTitle":"RHEL 10 must encrypt the transfer of audit records off-loaded onto a different system or media from the system being audited via rsyslog.","description":"Information stored in one location is vulnerable to accidental or incidental deletion or alteration.\n\nOff-loading is a common process in information systems with limited audit storage capacity.\n\nRHEL 10 installation media provides \"rsyslogd\", a system utility providing support for message logging. Support for both internet and Unix domain sockets enables this utility to support both local and remote logging. Coupling this utility with \"gnutls\" (a secure communications library implementing the Secure Sockets Layer [SSL], Transport Layer Security [TLS], and Datagram TLS [DTLS] protocols) creates a method to securely encrypt and off-load auditing. When this utility is coupled with the omfwd module, it can use the ossl network stream driver, which leverages the OpenSSL library for Transport Layer Security (TLS) to securely encrypt and off-load auditing.\n\n\"Rsyslog\" supported authentication modes include:\n- anon - Anonymous authentication.\n- x509/fingerprint - Certificate fingerprint authentication.\n- x509/certvalid - Certificate validation only.\n- x509/name - Certificate validation and subject name authentication.\n\nSatisfies: SRG-OS-000342-GPOS-00133, SRG-OS-000479-GPOS-00224","checkContent":"Verify RHEL 10 encrypts audit records offloaded onto a different system via rsyslog using the modern \"omfwd\" action.\n\nSearch for active TLS-enabling configurations within \"omfwd\" action blocks with the following command:\n\n$ sudo grep -rE 'tls=\"on\"|StreamDriver.Mode\\s*=\\s*\"1\"' /etc/rsyslog.conf /etc/rsyslog.d/\n\nIf 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.","fixText":"Configure RHEL 10 to encrypt off-loaded audit records via rsyslog by enabling TLS within the \"omfwd\" action rule.\n\nEdit the configuration file containing the \"omfwd\" rule (e.g., /etc/rsyslog.d/99-forwarding.conf) and add the tls=\"on\" parameter.\n\nExample:\naction(\n  type=\"omfwd\"\n  target=\"logserver.example.com\"\n  protocol=\"tcp\"\n  port=\"6514\"\n  tls=\"on\"\n)\n\nAfter applying the configuration, restart the rsyslog service:\n$ sudo systemctl restart rsyslog","ccis":["CCI-001851"]},{"vulnId":"V-280989","ruleId":"SV-280989r1197222_rule","severity":"medium","ruleTitle":"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.","description":"Information stored in one location is vulnerable to accidental or incidental deletion or alteration.\n\nOff-loading is a common process in information systems with limited audit storage capacity.\n\nRHEL 10 installation media provides \"rsyslogd\", a system utility providing support for message logging. Support for both internet and Unix domain sockets enables this utility to support both local and remote logging. Coupling this utility with \"gnutls\" (a secure communications library implementing the Secure Sockets Layer [SSL], Transport Layer Security [TLS], and Datagram TLS [DTLS] protocols) creates a method to securely encrypt and off-load auditing. When this utility is coupled with the omfwd module, it can use the ossl network stream driver, which leverages the OpenSSL library for Transport Layer Security (TLS) to securely encrypt and off-load auditing.\n\nSatisfies: SRG-OS-000342-GPOS-00133, SRG-OS-000479-GPOS-00224","checkContent":"Verify RHEL 10 explicitly defines a TLS driver (gtls or ossl) for encrypted rsyslog off-loading.\n\nSearch for an explicitly defined stream driver within \"omfwd\" action blocks with the following command:\n\n$ sudo grep -rE 'StreamDriver\\s*=\\s*\"(gtls|ossl)\"' /etc/rsyslog.conf /etc/rsyslog.d/\n\nIf 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.","fixText":"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.\n\nAdd the \"streamdriver\" parameter to the \"omfwd\" action rule in its configuration file (e.g., /etc/rsyslog.d/99-forwarding.conf).\n\nExample:\naction(\n  type=\"omfwd\"\n  streamdriver=\"ossl\"\n  target=\"logserver.example.com\"\n  protocol=\"tcp\"\n  port=\"6514\"\n  tls=\"on\"\n)\n\nAfter applying the configuration, restart the rsyslog service:\n$ sudo systemctl restart rsyslog","ccis":["CCI-001851"]},{"vulnId":"V-280990","ruleId":"SV-280990r1165325_rule","severity":"medium","ruleTitle":"RHEL 10 must monitor all remote access methods.","description":"Logging remote access methods can be used to trace the decrease in the risks associated with remote user access management. It can also be used to spot cyberattacks and ensure ongoing compliance with organizational policies surrounding the use of remote access methods.","checkContent":"Verify RHEL 10 monitors all remote access methods with the following command:\n\n$ sudo grep -rE '(auth.\\*|authpriv.\\*|daemon.\\*)' /etc/rsyslog.conf /etc/rsyslog.d/\n/etc/rsyslog.conf:authpriv.*                                              /var/log/secure\n\nIf \"auth.*\", \"authpriv.*\", or \"daemon.*\" are not configured to be logged, this is a finding.","fixText":"Configure RHEL 10 to monitor all remote access methods.\n\nAdd or update the following lines to the \"/etc/rsyslog.conf\" file or a file in \"/etc/rsyslog.d\":\n\nauth.*;authpriv.*;daemon.* /var/log/secure\n\nRestart the \"rsyslog\" service with the following command for the changes to take effect:\n\n$ sudo systemctl restart rsyslog.service","ccis":["CCI-000067"]},{"vulnId":"V-280991","ruleId":"SV-280991r1165328_rule","severity":"medium","ruleTitle":"RHEL 10 must use cron logging.","description":"Cron logging can be used to trace the successful or unsuccessful execution of cron jobs. It can also be used to spot intrusions into the use of the cron facility by unauthorized and malicious users.","checkContent":"Verify RHEL 10 rsyslog is configured to log cron events with the following command:\n\nNote: If another logging package is used, substitute the utility configuration file for \"/etc/rsyslog.conf\" or \"/etc/rsyslog.d/*.conf\" files.\n\n$ sudo grep -s cron /etc/rsyslog.conf /etc/rsyslog.d/*.conf\n/etc/rsyslog.conf:*.info;mail.none;authpriv.none;cron.none /var/log/messages\n/etc/rsyslog.conf:cron.* /var/log/cron\n\nIf the command does not return a response, check for cron logging all facilities with the following command:\n\n$ logger -p local0.info \"Test message for all facilities.\"\n\nCheck the logs for the test message with the following:\n\n$ sudo tail /var/log/messages\n\nIf \"rsyslog\" is not logging messages for the cron facility or all facilities, this is a finding.","fixText":"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:\n\ncron.* /var/log/cron\n\nRestart the rsyslog daemon with the following command for the changes to take effect:\n\n$ sudo systemctl restart rsyslog.service","ccis":["CCI-000133"]},{"vulnId":"V-280992","ruleId":"SV-280992r1195379_rule","severity":"medium","ruleTitle":"RHEL 10 must have the packages required for encrypting off-loaded audit logs installed.","description":"The \"rsyslog-gnutls\" package provides Transport Layer Security (TLS) support for the rsyslog daemon, which enables secure remote logging.","checkContent":"Verify RHEL 10 has the \"rsyslog-gnutls\" package installed with the following command:\n\n$ sudo dnf list --installed rsyslog-gnutls\nInstalled Packages\nrsyslog-gnutls.x86_64                                     8.2412.0-1.el10                                     @AppStream\n\nIf the \"rsyslog-gnutls\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"rsyslog-gnutls\" package installed with the following command:\n\n$ sudo dnf -y install rsyslog-gnutls","ccis":["CCI-000803"]},{"vulnId":"V-280993","ruleId":"SV-280993r1195381_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"audit\" package installed.","description":"Without establishing what type of events occurred, along with the source, location, and outcome, it would be difficult to establish, correlate, and investigate the events leading up to an outage or attack.\n\nAudit record content that may be necessary to satisfy this requirement includes, for example, time stamps, source and destination addresses, user/process identifiers, event descriptions, success/fail indications, filenames involved, and access control or flow control rules invoked.\n\nAssociating event types with detected events in audit logs provides a means of investigating an attack, recognizing resource utilization or capacity thresholds, or identifying an improperly configured RHEL 10 system.\n\nSatisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000038-GPOS-00016, SRG-OS-000039-GPOS-00017, SRG-OS-000040-GPOS-00018, SRG-OS-000041-GPOS-00019, SRG-OS-000042-GPOS-00021, SRG-OS-000051-GPOS-00024, SRG-OS-000054-GPOS-00025, SRG-OS-000122-GPOS-00063, SRG-OS-000254-GPOS-00095, SRG-OS-000255-GPOS-00096, SRG-OS-000337-GPOS-00129, SRG-OS-000348-GPOS-00136, SRG-OS-000349-GPOS-00137, SRG-OS-000350-GPOS-00138, SRG-OS-000351-GPOS-00139, SRG-OS-000352-GPOS-00140, SRG-OS-000353-GPOS-00141, SRG-OS-000354-GPOS-00142, SRG-OS-000358-GPOS-00145, SRG-OS-000365-GPOS-00152, SRG-OS-000392-GPOS-00172, SRG-OS-000475-GPOS-00220","checkContent":"Verify RHEL 10 has the \"audit\" service package installed with the following command:\n\n$ sudo dnf list --installed audit\nInstalled Packages\naudit.x86_64                                           4.0.3-1.el10                                            @anaconda\n\nIf the \"audit\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"audit\" service package installed with the following command:\n\n$ sudo dnf -y install audit","ccis":["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"]},{"vulnId":"V-280994","ruleId":"SV-280994r1165337_rule","severity":"medium","ruleTitle":"RHEL 10 must enable the audit service.","description":"Without establishing what type of events occurred, it would be difficult to establish, correlate, and investigate the events leading up to an outage or attack. Ensuring the auditd service is active ensures audit records generated by the kernel are appropriately recorded.\n\nAdditionally, a properly configured audit subsystem ensures that actions of individual system users can be uniquely traced to those users so they can be held accountable for their actions.\n\nSatisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000038-GPOS-00016, SRG-OS-000039-GPOS-00017, SRG-OS-000040-GPOS-00018, SRG-OS-000041-GPOS-00019, SRG-OS-000042-GPOS-00021, SRG-OS-000051-GPOS-00024, SRG-OS-000054-GPOS-00025, SRG-OS-000122-GPOS-00063, SRG-OS-000254-GPOS-00095, SRG-OS-000255-GPOS-00096, SRG-OS-000337-GPOS-00129, SRG-OS-000348-GPOS-00136, SRG-OS-000349-GPOS-00137, SRG-OS-000350-GPOS-00138, SRG-OS-000351-GPOS-00139, SRG-OS-000352-GPOS-00140, SRG-OS-000353-GPOS-00141, SRG-OS-000354-GPOS-00142, SRG-OS-000358-GPOS-00145, SRG-OS-000365-GPOS-00152, SRG-OS-000392-GPOS-00172, SRG-OS-000475-GPOS-00220","checkContent":"Verify RHEL 10 enables the audit service to produce audit records with the following command:\n\n$ systemctl status auditd.service\no auditd.service - Security Audit Logging Service\n     Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; preset: enabled)\n     Active: active (running) since Wed 2025-10-01 14:00:21 EDT; 1 week 6 days ago\n\nIf the audit service is not \"active\" and \"running\", this is a finding.","fixText":"Configure RHEL 10 to enable the auditd service with the following command:\n\n$ sudo systemctl enable --now auditd","ccis":["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"]},{"vulnId":"V-280995","ruleId":"SV-280995r1195383_rule","severity":"low","ruleTitle":"RHEL 10 must have the \"audispd-plugins\" package installed.","description":"The \"audispd-plugins\" package provides plugins for the real-time interface to the audit subsystem, \"audispd\". These plugins can do such things as relay events to remote machines or analyze events for suspicious behavior.","checkContent":"Verify RHEL 10 has the \"audispd-plugins\" package installed with the following command:\n\n$ sudo dnf list --installed audispd-plugins\nInstalled Packages\naudispd-plugins.x86_64                           4.0.3-1.el10                            @rhel-10-for-x86_64-baseos-rpms\n\nIf the \"audispd-plugins\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"audispd-plugins\" package installed with the following command:\n\n$ sudo dnf -y install audispd-plugins","ccis":["CCI-001851"]},{"vulnId":"V-280996","ruleId":"SV-280996r1195385_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"libreswan\" package installed.","description":"Providing the ability for remote users or systems to initiate a secure virtual private network connection protects information when it is transmitted over a wide area network.","checkContent":"Note: If there is no operational need for Libreswan to be installed, this rule is not applicable.\n\nVerify RHEL 10 has the \"libreswan\" service package installed with the following command:\n\n$ sudo dnf list --installed libreswan\nInstalled Packages\nlibreswan.x86_64                                         5.2-1.el10_0                                         @AppStream\n\nIf the \"libreswan\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"libreswan\" service package installed with the following command:\n\n$ sudo dnf -y install libreswan","ccis":["CCI-000803"]},{"vulnId":"V-280997","ruleId":"SV-280997r1195387_rule","severity":"medium","ruleTitle":"RHEL 10 must notify designated personnel if baseline configurations are changed in an unauthorized manner.","description":"The \"postfix\" package provides the mail command required to allow sending email notifications of unauthorized configuration changes to designated personnel.","checkContent":"Verify RHEL 10 is configured to allow sending email notifications.\n\nNote: The \"postfix\" package provides the \"mail\" command that is used to send email messages.\n\nVerify that the \"postfix\" package is installed on the system:\n\n$ sudo dnf list --installed postfix\nInstalled Packages\npostfix.x86_64                                         2:3.8.5-8.el10                                         @AppStream\n\nIf the \"postfix\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to notify designated personnel if baseline configurations are changed in an unauthorized manner.\n\nInstall the postfix package with the following command:\n\n$ sudo dnf -y install postfix","ccis":["CCI-000139"]},{"vulnId":"V-280998","ruleId":"SV-280998r1165349_rule","severity":"medium","ruleTitle":"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.","description":"It is critical for the appropriate personnel to be aware if a system is at risk of failing to process audit logs as required. Without this notification, the security personnel may be unaware of an impending failure of the audit capability, and system operation may be adversely affected.\n\nAudit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded.\n\nThis requirement applies to each audit data storage repository (i.e., distinct information system component where audit records are stored), the centralized audit storage capacity of organizations (i.e., all audit data storage repositories combined), or both.","checkContent":"Verify RHEL 10 is configured to notify the appropriate interactive users of an audit processing failure.\n\nFind the alias maps that are being used with the following command:\n\n$ postconf alias_maps\nalias_maps = hash:/etc/aliases\n\nQuery the Postfix alias maps for an alias for the root user with the following command:\n\n$ postmap -q root hash:/etc/aliases\nisso\n\nIf an alias is not set, this is a finding.","fixText":"Configure RHEL 10 to have mail aliases notify the ISSO and SA (at a minimum) of an audit processing failure.\n\nEdit the aliases map file (by default /etc/aliases) used by Postfix and configure a root alias (using the user ISSO as an example):\n\nroot:    ISSO\n\nUpdate the aliases database with the following command:\n\n$ sudo newaliases","ccis":["CCI-000139"]},{"vulnId":"V-280999","ruleId":"SV-280999r1165352_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured to prevent unrestricted mail relaying.","description":"If unrestricted mail relaying is permitted, unauthorized senders could use this host as a mail relay to send spam or for other unauthorized activity.","checkContent":"Note: If postfix is not installed, this is not applicable.\n\nVerify RHEL 10 is configured to prevent unrestricted mail relaying with the following command:\n\n$ postconf -n smtpd_client_restrictions\nsmtpd_client_restrictions = permit_mynetworks,reject\n\nIf 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.","fixText":"Configure RHEL 10 so that the postfix configuration file restricts client connections to the local network with the following command:\n\n$ sudo postconf -e 'smtpd_client_restrictions = permit_mynetworks,reject'","ccis":["CCI-000381"]},{"vulnId":"V-281000","ruleId":"SV-281000r1195389_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"cronie\" package installed.","description":"The \"cronie\" package must be installed if it is to be available for multifactor authentication using smart cards.","checkContent":"Verify RHEL 10 has the \"cronie\" package installed with the following command:\n\n$ sudo dnf list --installed cronie\nInstalled Packages\ncronie.x86_64                                           1.7.0-9.el10                                           @anaconda\n\nIf the \"cronie\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"cronie\" package installed with the following command:\n\n$ sudo dnf -y install cronie","ccis":["CCI-000381"]},{"vulnId":"V-281001","ruleId":"SV-281001r1195391_rule","severity":"medium","ruleTitle":"RHEL 10 must have a Secure Shell (SSH) server installed for all networked systems.","description":"Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and read or altered.\n\nThis requirement applies to internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification.\n\nProtecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, logical means (cryptography) do not have to be employed, and vice versa.\n\nSatisfies: SRG-OS-000423-GPOS-00187, SRG-OS-000424-GPOS-00188, SRG-OS-000425-GPOS-00189, SRG-OS-000426-GPOS-00190","checkContent":"Verify RHEL 10 has the \"openssh-server\" package installed with the following command:\n\n$ sudo dnf list --installed openssh-server\nInstalled Packages\nopenssh-server.x86_64                                      9.9p1-7.el10_0                                      @anaconda\n\nIf the \"openssh-server\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"openssh-server\" package installed with the following command:\n\n$ sudo dnf -y install openssh-server","ccis":["CCI-002418","CCI-002421","CCI-002420","CCI-002422"]},{"vulnId":"V-281002","ruleId":"SV-281002r1184641_rule","severity":"medium","ruleTitle":"RHEL 10 must, for all networked systems, have and implement Secure Shell (SSH) to protect the confidentiality and integrity of transmitted and received information.","description":"Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered.\n\nThis requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification.\n\nProtecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa.\n\nSatisfies: SRG-OS-000423-GPOS-00187, SRG-OS-000424-GPOS-00188, SRG-OS-000425-GPOS-00189, SRG-OS-000426-GPOS-00190","checkContent":"Verify RHEL 10 \"sshd\" is active with the following command:\n\n$ systemctl is-active sshd\nactive\n\nIf the \"sshd\" service is not active, this is a finding.","fixText":"Configure RHEL 10 to enable the sshd service by running the following command:\n\n$ systemctl enable --now sshd","ccis":["CCI-002418","CCI-002421","CCI-002420","CCI-002422"]},{"vulnId":"V-281003","ruleId":"SV-281003r1195393_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"openssh-clients\" package installed.","description":"This package includes utilities to make encrypted connections and transfer files securely to Secure Shell (SSH) servers.","checkContent":"Verify RHEL 10 has the \"openssh-clients\" package installed with the following command:\n\n$ sudo dnf list --installed openssh-clients\nInstalled Packages\nopenssh-clients.x86_64                                     9.9p1-7.el10_0                                      @anaconda\n\nIf the \"openssh-clients\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"openssh-clients\" package installed with the following command:\n\n$ sudo dnf -y install openssh-clients","ccis":["CCI-000381"]},{"vulnId":"V-281005","ruleId":"SV-281005r1195395_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"pkcs11-provider\" package installed.","description":"Without the use of multifactor authentication, the ease of access to privileged functions is greatly increased. Multifactor authentication requires using two or more factors to achieve authentication. A privileged account is defined as an information system account with authorizations of a privileged user. The DOD common access card (CAC) with DOD-approved PKI is an example of multifactor authentication.\n\nSatisfies: SRG-OS-000105-GPOS-00052, SRG-OS-000375-GPOS-00160, SRG-OS-000377-GPOS-00162","checkContent":"Note: If the system administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable.\n\nVerify RHEL 10 has the \"openssl-pkcs11\" package installed with the following command:\n\n$ sudo dnf list --installed pkcs11-provider\nInstalled Packages\npkcs11-provider.x86_64                           1.0-3.el10_0                            @rhel-10-for-x86_64-baseos-rpms\n\nIf the \"openssl-pkcs11\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"openssl-pkcs11\" package installed with the following command:\n\n$ sudo dnf -y install pkcs11-provider","ccis":["CCI-000765","CCI-004046","CCI-001954"]},{"vulnId":"V-281006","ruleId":"SV-281006r1195397_rule","severity":"medium","ruleTitle":"RHEL 10 must have the \"gnutls-utils\" package installed.","description":"\"GnuTLS\" is a secure communications library implementing the Secure Sockets Layer (SSL), Transport Layer Security (TLS), and Datagram TLS (DTLS) protocols and technologies around them. It provides a simple C language application programming interface (API) to access the secure communications protocols as well as APIs to parse and write X.509, PKCS #12, OpenPGP, and other required structures. This package contains command line TLS client and server and certificate manipulation tools.","checkContent":"Verify RHEL 10 has the \"gnutls-utils\" package installed with the following command:\n\n$ sudo dnf list --installed gnutls-utils\nInstalled Packages\ngnutls-utils.x86_64                         3.8.9-9.el10_0.14                         @rhel-10-for-x86_64-appstream-rpms\n\nIf the \"gnutls-utils\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"gnutls-utils\" package installed with the following command:\n\n$ sudo dnf -y install gnutls-utils","ccis":["CCI-000381"]},{"vulnId":"V-281007","ruleId":"SV-281007r1195399_rule","severity":"high","ruleTitle":"RHEL 10 must have the \"crypto-policies\" package installed.","description":"Centralized cryptographic policies simplify applying secure ciphers across an operating system and the applications that run on that operating system. Use of weak or untested encryption algorithms undermines the purposes of using encryption to protect data.\n\nSatisfies: SRG-OS-000396-GPOS-00176, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174","checkContent":"Verify RHEL 10 has the \"crypto-policies\" package installed with the following command:\n\n$ sudo dnf list --installed crypto-policies\nInstalled Packages\ncrypto-policies.noarch                  20250214-1.gitfd9b9b9.el10_0.1                   @rhel-10-for-x86_64-baseos-rpms\n\nIf the \"crypto-policies\" package is not installed, this is a finding.","fixText":"Configure RHEL 10 to have the \"crypto-policies\" package installed with the following command:\n\n$ sudo dnf -y install crypto-policies","ccis":["CCI-002450","CCI-002890","CCI-003123"]},{"vulnId":"V-281008","ruleId":"SV-281008r1195401_rule","severity":"high","ruleTitle":"RHEL 10 must implement a FIPS 140-3-compliant systemwide cryptographic policy.","description":"Centralized cryptographic policies simplify applying secure ciphers across an operating system and the applications that run on that operating system. Use of weak or untested encryption algorithms undermines the purposes of using encryption to protect data.\n\nSatisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000396-GPOS-00176, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174","checkContent":"Verify RHEL 10 is set to use a FIPS 140-3-compliant systemwide cryptographic policy.\n\nVerify the current systemwide crypto-policy with the following command:\n\n$ update-crypto-policies --show\nFIPS\n\nIf the systemwide crypto-policy is not set to \"FIPS\", this is a finding.\n\nVerify the current minimum crypto-policy configuration with the following commands:\n\n$ sudo grep -E 'rsa_size|hash' /etc/crypto-policies/state/CURRENT.pol\nhash = SHA2-256 SHA2-384 SHA2-512 SHA2-224 SHA3-256 SHA3-384 SHA3-512 SHAKE-256\nmin_rsa_size = 2048\n\nIf the \"hash\" values do not include at least the following FIPS 140-3-compliant algorithms, this is a finding:\n\n\"SHA2-256 SHA2-384 SHA2-512 SHA2-224 SHA3-256 SHA3-384 SHA3-512 SHAKE-256\"\n\nIf any algorithms include \"SHA1\" or a hash value less than \"224\", this is a finding.\n\nIf the \"min_rsa_size\" is not set to a value of at least \"2048\", this is a finding.\n\nIf these commands do not return any output, this is a finding.","fixText":"Configure RHEL 10 to use a FIPS 140-3-compliant systemwide cryptographic policy.\n\nSet the systemwide crypto-policy to FIPS with the following command:\n\n$ sudo update-crypto-policies --set FIPS\nSetting system policy to FIPS\n\nNote: Systemwide crypto-policies are applied on application startup. It is recommended to restart the system for the change of policies to fully take place.","ccis":["CCI-000068","CCI-002450","CCI-002890","CCI-003123"]},{"vulnId":"V-281009","ruleId":"SV-281009r1184724_rule","severity":"high","ruleTitle":"RHEL 10 must enable FIPS mode.","description":"Use of weak or untested encryption algorithms undermines the purposes of using encryption to protect data. The operating system must implement cryptographic modules adhering to the higher standards approved by the federal government because this provides assurance they have been tested and validated.\n\nSatisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000125-GPOS-00065, SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174, SRG-OS-000396-GPOS-00176, SRG-OS-000423-GPOS-00187, SRG-OS-000478-GPOS-00223","checkContent":"Verify RHEL 10 is in FIPS mode with the following command:\n\n$ cat /proc/sys/crypto/fips_enabled\n1\n\nIf the command does not return \"1\", this is a finding.","fixText":"Configure RHEL 10 to implement FIPS mode.\n\nIf this check fails on an installed system, it is a permanent finding until the system is reinstalled with \"fips=1\" during installation.\n\nRed Hat 10 does not support switching to strict FIPS mode after installation.","ccis":["CCI-000068","CCI-000877","CCI-001453","CCI-002890","CCI-003123","CCI-002450","CCI-002418"]},{"vulnId":"V-281010","ruleId":"SV-281010r1184643_rule","severity":"high","ruleTitle":"RHEL 10 must be configured so that Secure Shell (SSH) clients use only DOD-approved encryption ciphers employing FIPS 140-3-validated cryptographic hash algorithms to protect the confidentiality of SSH client connections.","description":"Without cryptographic integrity protections, information can be altered by unauthorized users without detection.\n\nRemote access (e.g., Remote Desktop Protocol [RDP]) is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganizational-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nCryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions that use asymmetric cryptography. This enables distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.\n\nRHEL 10 incorporates systemwide crypto policies by default. The SSH configuration file has no effect on the ciphers, MACs, or algorithms unless specifically defined in the \"/etc/sysconfig/sshd\" file. The employed algorithms can be viewed in the \"/etc/crypto-policies/back-ends/openssh.config\" file.\n\nSatisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000125-GPOS-00065, SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174, SRG-OS-000423-GPOS-00187","checkContent":"Verify RHEL 10 SSH clients are configured to use only ciphers employing FIPS 140-3-approved algorithms.\n\nTo verify the ciphers in the systemwide SSH configuration file, use the following command:\n\n$ sudo grep -i Ciphers /etc/crypto-policies/back-ends/openssh.config\nCiphers aes256-gcm@openssh.com,aes256-ctr,aes128-gcm@openssh.com,aes128-ctr\n\nIf the cipher entries in the \"openssh.config\" file have any ciphers other than \"aes256-gcm@openssh.com,aes256-ctr,aes128-gcm@openssh.com,aes128-ctr\", or they are missing or commented out, this is a finding.","fixText":"Configure RHEL 10 SSH clients to use only ciphers employing FIPS 140-3-approved algorithms.\n\nReinstall crypto-policies with the following command:\n\n$ sudo dnf -y reinstall crypto-policies\n\nSet the crypto-policy to FIPS with the following command:\n\n$ sudo update-crypto-policies --set FIPS\nSetting system policy to FIPS\n\nNote: Systemwide crypto policies are applied on application startup. It is recommended to restart the system for the change of policies to fully take place.","ccis":["CCI-000068","CCI-000877","CCI-001453","CCI-002890","CCI-003123","CCI-002418"]},{"vulnId":"V-281011","ruleId":"SV-281011r1184644_rule","severity":"high","ruleTitle":"RHEL 10 must be configured so that Secure Shell (SSH) servers use only DOD-approved encryption ciphers employing FIPS 140-3-validated cryptographic hash algorithms to protect the confidentiality of SSH server connections.","description":"Without cryptographic integrity protections, unauthorized users can alter information without detection.\n\nRemote access (e.g., Remote Desktop Protocol [RDP]) is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganizational-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nCryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions that use asymmetric cryptography. This enables distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.\n\nRHEL 10 incorporates systemwide crypto policies by default. The SSH configuration file has no effect on the ciphers, MACs, or algorithms unless specifically defined in the \"/etc/sysconfig/sshd\" file. The employed algorithms can be viewed in the \"/etc/crypto-policies/back-ends/opensshserver.config\" file.\n\nSatisfies: SRG-OS-000125-GPOS-00065, SRG-OS-000250-GPOS-00093","checkContent":"Verify RHEL 10 SSH servers are configured to use only ciphers employing FIPS 140-3-approved algorithms.\n\nTo verify the ciphers in the systemwide SSH configuration file, use the following command:\n\n$ sudo grep -i Ciphers /etc/crypto-policies/back-ends/opensshserver.config\nCiphers aes256-gcm@openssh.com,aes256-ctr,aes128-gcm@openssh.com,aes128-ctr\n\nIf the cipher entries in the \"opensshserver.config\" file have any ciphers other than \"aes256-gcm@openssh.com,aes256-ctr,aes128-gcm@openssh.com,aes128-ctr\", or they are missing or commented out, this is a finding.","fixText":"Configure RHEL 10 SSH servers to use only ciphers employing FIPS 140-3-approved algorithms.\n\nReinstall crypto-policies with the following command:\n\n$ sudo dnf -y reinstall crypto-policies\n\nSet the crypto-policy to FIPS with the following command:\n\n$ sudo update-crypto-policies --set FIPS\nSetting system policy to FIPS\n\nNote: Systemwide crypto policies are applied on application startup. It is recommended to restart the system for the change of policies to fully take place.","ccis":["CCI-000877","CCI-001453"]},{"vulnId":"V-281012","ruleId":"SV-281012r1184645_rule","severity":"high","ruleTitle":"RHEL 10 must be configured so that Secure Shell (SSH) clients use only DOD-approved Message Authentication Codes (MACs) employing FIPS 140-3-validated cryptographic hash algorithms to protect the confidentiality of SSH client connections.","description":"Without cryptographic integrity protections, information can be altered by unauthorized users without detection.\n\nRemote access (e.g., Remote Desktop Protocol [RDP]) is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganizational-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nCryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions that use asymmetric cryptography. This enables distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.\n\nRHEL 10 incorporates systemwide crypto policies by default. The SSH configuration file has no effect on the ciphers, MACs, or algorithms unless specifically defined in the \"/etc/sysconfig/sshd\" file. The employed algorithms can be viewed in the \"/etc/crypto-policies/back-ends/openssh.config\" file.\n\nSatisfies: SRG-OS-000125-GPOS-00065, SRG-OS-000250-GPOS-00093","checkContent":"Verify RHEL 10 SSH clients are configured to use only MACs employing FIPS 140-3-approved algorithms.\n\nTo verify the MACs in the systemwide SSH configuration file, use the following command:\n\n$ sudo grep -i MACs /etc/crypto-policies/back-ends/openssh.config\nMACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha2-512\n\nIf the MACs entries in the \"openssh.config\" file have any hashes other than \"hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha2-512\", or they are missing or commented out, this is a finding.","fixText":"Configure RHEL 10 SSH clients to use only MACs employing FIPS 140-3-approved algorithms.\n\nReinstall crypto-policies with the following command:\n\n$ sudo dnf -y reinstall crypto-policies\n\nSet the crypto-policy to FIPS with the following command:\n\n$ sudo update-crypto-policies --set FIPS\nSetting system policy to FIPS\n\nNote: Systemwide crypto policies are applied on application startup. It is recommended to restart the system for the change of policies to fully take place.","ccis":["CCI-000877","CCI-001453"]},{"vulnId":"V-281013","ruleId":"SV-281013r1184646_rule","severity":"high","ruleTitle":"RHEL 10 must be configured so that Secure Shell (SSH) servers use only DOD-approved Message Authentication Codes (MACs) employing FIPS 140-3-validated cryptographic hash algorithms to protect the confidentiality of SSH server connections.","description":"Without cryptographic integrity protections, information can be altered by unauthorized users without detection.\n\nRemote access (e.g., Remote Desktop Protocol [RDP]) is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nCryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions using asymmetric cryptography enabling distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.\n\nRHEL 10 incorporates systemwide crypto policies by default. The SSH configuration file has no effect on the ciphers, MACs, or algorithms unless specifically defined in the \"/etc/sysconfig/sshd\" file. The employed algorithms can be viewed in the \"/etc/crypto-policies/back-ends/opensshserver.config\" file.\n\nSatisfies: SRG-OS-000125-GPOS-00065, SRG-OS-000250-GPOS-00093","checkContent":"Verify RHEL 10 SSH servers are configured to use only MACs employing FIPS 140-3-approved algorithms with the following command:\n\n$ sudo grep -i MACs /etc/crypto-policies/back-ends/opensshserver.config\nMACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha2-512\n\nIf the MACs entries in the \"opensshserver.config\" file have any hashes other than \"hmac-sha2-512\" and \"hmac-sha2-256\", the order differs from the example above, or they are missing or commented out, this is a finding.","fixText":"Configure RHEL 10 SSH servers to use only MACs employing FIPS 140-3-approved algorithms.\n\nReinstall crypto-policies with the following command:\n\n$ sudo dnf -y reinstall crypto-policies\n\nSet the crypto-policy to FIPS with the following command:\n\n$ sudo update-crypto-policies --set FIPS\nSetting system policy to FIPS\n\nNote: Systemwide crypto policies are applied on application startup. It is recommended to restart the system for the change of policies to fully take place.","ccis":["CCI-000877","CCI-001453"]},{"vulnId":"V-281014","ruleId":"SV-281014r1165397_rule","severity":"high","ruleTitle":"RHEL 10 must use FIPS 140-3-approved cryptographic algorithms for IP tunnels.","description":"Overriding the systemwide cryptographic policy makes the behavior of the Libreswan service violate expectations and makes system configuration more fragmented.","checkContent":"Note: If the IPsec service is not installed, this requirement is not applicable.\n\nVerify RHEL 10 sets the IPsec service to use the systemwide cryptographic policy with the following command:\n\n$ sudo grep include /etc/ipsec.conf /etc/ipsec.d/*.conf\n/etc/ipsec.conf:include /etc/crypto-policies/back-ends/libreswan.config\n\nIf the ipsec configuration file does not contain \"include /etc/crypto-policies/back-ends/libreswan.config\", this is a finding.","fixText":"Configure RHEL 10 so that Libreswan uses the systemwide cryptographic policy.\n\nAdd the following line to \"/etc/ipsec.conf\":\n\ninclude /etc/crypto-policies/back-ends/libreswan.config","ccis":["CCI-000068"]},{"vulnId":"V-281015","ruleId":"SV-281015r1184783_rule","severity":"high","ruleTitle":"RHEL 10 must implement DOD-approved encryption in the bind package.","description":"Without cryptographic integrity protections, information can be altered by unauthorized users without detection.\n\nCryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions using asymmetric cryptography enabling distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.\n\nRHEL 10 incorporates systemwide crypto policies by default. The employed algorithms can be viewed in the \"/etc/crypto-policies/back-ends/\" directory.\n\nSatisfies: SRG-OS-000423-GPOS-00187, SRG-OS-000426-GPOS-00190","checkContent":"Note: If the \"bind\" package is not installed, this requirement is not applicable.\n\nVerify RHEL 10 BIND uses the systemwide cryptographic policy with the following command:\n\n$ sudo grep include /etc/named.conf\ninclude \"/etc/crypto-policies/back-ends/bind.config\";'\n\nIf BIND is installed and the BIND config file does not contain the include \"/etc/crypto-policies/back-ends/bind.config\" directive, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 BIND to use the systemwide cryptographic policy.\n\nAdd the following line to the \"options\" section in \"/etc/named.conf\":\n\ninclude \"/etc/crypto-policies/back-ends/bind.config\";","ccis":["CCI-002418","CCI-002422"]},{"vulnId":"V-281016","ruleId":"SV-281016r1165403_rule","severity":"high","ruleTitle":"RHEL 10 cryptographic policy must not be overridden.","description":"Centralized cryptographic policies simplify applying secure ciphers across an operating system and the applications that run on that operating system. Use of weak or untested encryption algorithms undermines the purposes of using encryption to protect data.\n\nSatisfies: SRG-OS-000396-GPOS-00176, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174","checkContent":"Verify RHEL 10 cryptographic policies are not overridden.\n\nVerify the configured policy matches the generated policy with the following command:\n\n$ sudo update-crypto-policies --check\nThe configured policy matches the generated policy\n\nIf the returned message does not match the above, but instead matches the following, this is a finding:\n\nThe configured policy does NOT match the generated policy\n\nList all of the crypto backends configured on the system with the following command:\n\n$ ls -l /etc/crypto-policies/back-ends/ \nlrwxrwxrwx. 1 root root  40 Nov 13 16:29 bind.config -> /usr/share/crypto-policies/FIPS/bind.txt\nlrwxrwxrwx. 1 root root  42 Nov 13 16:29 gnutls.config -> /usr/share/crypto-policies/FIPS/gnutls.txt\nlrwxrwxrwx. 1 root root  40 Nov 13 16:29 java.config -> /usr/share/crypto-policies/FIPS/java.txt\nlrwxrwxrwx. 1 root root  46 Nov 13 16:29 javasystem.config -> /usr/share/crypto-policies/FIPS/javasystem.txt\nlrwxrwxrwx. 1 root root  40 Nov 13 16:29 krb5.config -> /usr/share/crypto-policies/FIPS/krb5.txt\nlrwxrwxrwx. 1 root root  45 Nov 13 16:29 libreswan.config -> /usr/share/crypto-policies/FIPS/libreswan.txt\nlrwxrwxrwx. 1 root root  42 Nov 13 16:29 libssh.config -> /usr/share/crypto-policies/FIPS/libssh.txt\n-rw-r--r--. 1 root root 398 Nov 13 16:29 nss.config\nlrwxrwxrwx. 1 root root  43 Nov 13 16:29 openssh.config -> /usr/share/crypto-policies/FIPS/openssh.txt\nlrwxrwxrwx. 1 root root  49 Nov 13 16:29 opensshserver.config -> /usr/share/crypto-policies/FIPS/opensshserver.txt\nlrwxrwxrwx. 1 root root  46 Nov 13 16:29 opensslcnf.config -> /usr/share/crypto-policies/FIPS/opensslcnf.txt\nlrwxrwxrwx. 1 root root  43 Nov 13 16:29 openssl.config -> /usr/share/crypto-policies/FIPS/openssl.txt\nlrwxrwxrwx. 1 root root  48 Nov 13 16:29 openssl_fips.config -> /usr/share/crypto-policies/FIPS/openssl_fips.txt\n\nIf the paths do not point to the respective files under \"/usr/share/crypto-policies/FIPS\" path, this is a finding.\n\nNote: nss.config should not be symlinked.\n\nNote: If there is an operational need to use a subpolicy that causes the links to the crypto backends to break, this is a finding, and exceptions must be made by the authorizing official and documented with the information system security officer.","fixText":"Configure RHEL 10 to correctly implement the systemwide cryptographic policies by reinstalling the crypto-policies package contents.\n\nReinstall crypto-policies with the following command:\n\n$ sudo dnf -y reinstall crypto-policies\n\nSet the crypto-policy to FIPS with the following command:\n\n$ sudo update-crypto-policies --set FIPS\nSetting system policy to FIPS\n\nNote: Systemwide crypto policies are applied on application startup. It is recommended to restart the system for the change of policies to fully take place.","ccis":["CCI-002450","CCI-002890","CCI-003123"]},{"vulnId":"V-281017","ruleId":"SV-281017r1165406_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/group\" file is owned by root.","description":"The \"/etc/group\" file contains information regarding groups that are configured on the system. Protection of this file is important for system security.","checkContent":"Verify RHEL 10 is configured so that \"/etc/group\" file is owned by \"root\" with the following command:\n\n$ sudo stat -c \"%U %n\" /etc/group\nroot /etc/group\n\nIf the \"/etc/group\" file does not have an owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the owner of the file \"/etc/group\" is set to \"root\" by running the following command:\n\n$ sudo chown root /etc/group","ccis":["CCI-000213"]},{"vulnId":"V-281018","ruleId":"SV-281018r1165409_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/group\" file is group-owned by \"root\".","description":"The \"/etc/group\" file contains information regarding groups that are configured on the system. Protection of this file is important for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/group\" file is group-owned by \"root\" with the following command:\n\n$ sudo stat -c \"%G %n\" /etc/group\nroot /etc/group\n\nIf the \"/etc/group\" file does not have a group owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the group of the file \"/etc/group\" is set to \"root\" by running the following command:\n\n$ sudo chgrp root /etc/group","ccis":["CCI-000213"]},{"vulnId":"V-281019","ruleId":"SV-281019r1165412_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/group-\" file is owned by \"root\".","description":"The \"/etc/group-\" file is a backup file of \"/etc/group\", and as such contains information regarding groups that are configured on the system. Protection of this file is important for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/group-\" file is owned by \"root\" with the following command:\n\n$ sudo stat -c \"%U %n\" /etc/group-\nroot /etc/group-\n\nIf the \"/etc/group-\" file does not have an owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the owner of the \"/etc/group-\" file is set to \"root\" by running the following command:\n\n$ sudo chown root /etc/group-","ccis":["CCI-000213"]},{"vulnId":"V-281020","ruleId":"SV-281020r1165415_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/group-\" file is group-owned by \"root\".","description":"The \"/etc/group-\" file is a backup file of \"/etc/group\", and as such contains information regarding groups that are configured on the system. Protection of this file is important for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/group-\" file is group-owned by \"root\" with the following command:\n\n$ sudo stat -c \"%G %n\" /etc/group-\nroot /etc/group-\n\nIf the \"/etc/group-\" file does not have a group owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the group of the \"/etc/group-\" file is set to \"root\" by running the following command:\n\n$ sudo chgrp root /etc/group-","ccis":["CCI-000213"]},{"vulnId":"V-281021","ruleId":"SV-281021r1165418_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/gshadow\" file is owned by \"root\".","description":"The \"/etc/gshadow\" file contains group password hashes. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/gshadow\" file is owned by \"root\" with the following command:\n\n$ sudo stat -c \"%U %n\" /etc/gshadow\nroot /etc/gshadow\n\nIf the \"/etc/gshadow\" file does not have an owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the owner of the file \"/etc/gshadow\" is set to \"root\" by running the following command:\n\n$ sudo chown root /etc/gshadow","ccis":["CCI-000213"]},{"vulnId":"V-281022","ruleId":"SV-281022r1165421_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/gshadow\" file is group-owned by \"root\".","description":"The \"/etc/gshadow\" file contains group password hashes. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/gshadow\" file is group-owned by \"root\" with the following command:\n\n$ sudo stat -c \"%G %n\" /etc/gshadow\nroot /etc/gshadow\n\nIf the \"/etc/gshadow\" file does not have a group owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the group of the \"/etc/gshadow\" file is set to \"root\" by running the following command:\n\n$ sudo chgrp root /etc/gshadow","ccis":["CCI-000213"]},{"vulnId":"V-281023","ruleId":"SV-281023r1165424_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/gshadow-\" file is owned by \"root\".","description":"The \"/etc/gshadow-\" file is a backup of \"/etc/gshadow\", and as such contains group password hashes. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/gshadow-\" file is owned by \"root\" with the following command:\n\n$ sudo stat -c \"%U %n\" /etc/gshadow-\nroot /etc/gshadow-\n\nIf the \"/etc/gshadow-\" file does not have an owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the owner of the \"/etc/gshadow-\" file is set to \"root\" by running the following command:\n\n$ sudo chown root /etc/gshadow-","ccis":["CCI-000213"]},{"vulnId":"V-281024","ruleId":"SV-281024r1165427_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/gshadow-\" file is group-owned by \"root\".","description":"The \"/etc/gshadow-\" file is a backup of \"/etc/gshadow\", and as such contains group password hashes. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/gshadow-\" file is group-owned by \"root\" with the following command:\n\n$ sudo stat -c \"%G %n\" /etc/gshadow-\nroot /etc/gshadow-\n\nIf the \"/etc/gshadow-\" file does not have a group owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the group of the \"/etc/gshadow-\" file is set to \"root\" by running the following command:\n\n$ sudo chgrp root /etc/gshadow-","ccis":["CCI-000213"]},{"vulnId":"V-281025","ruleId":"SV-281025r1165430_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/passwd\" file is owned by \"root\".","description":"The \"/etc/passwd\" file contains information about the users that are configured on the system. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/passwd\" file is owned by \"root\" with the following command:\n\n$ sudo stat -c \"%U %n\" /etc/passwd\nroot /etc/passwd\n\nIf the \"/etc/passwd\" file does not have an owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the owner of the \"/etc/passwd\" file is set to \"root\" by running the following command:\n\n$ sudo chown root /etc/passwd","ccis":["CCI-000213"]},{"vulnId":"V-281026","ruleId":"SV-281026r1165433_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/passwd\" file is group-owned by \"root\".","description":"The \"/etc/passwd\" file contains information about the users that are configured on the system. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/passwd\" file is group-owned by \"root\" with the following command:\n\n$ sudo stat -c \"%G %n\" /etc/passwd\nroot /etc/passwd\n\nIf the \"/etc/passwd\" file does not have a group owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the group of the \"/etc/passwd\" file is set to \"root\" by running the following command:\n\n$ sudo chgrp root /etc/passwd","ccis":["CCI-000213"]},{"vulnId":"V-281027","ruleId":"SV-281027r1165436_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/passwd-\" file is owned by \"root\".","description":"The \"/etc/passwd-\" file is a backup file of \"/etc/passwd\", and as such contains information about the users that are configured on the system. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/passwd-\" file is owned by \"root\" with the following command:\n\n$ sudo stat -c \"%U %n\" /etc/passwd-\nroot /etc/passwd-\n\nIf the \"/etc/passwd-\" file does not have an owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the owner of the \"/etc/passwd-\" file is set to \"root\" by running the following command:\n\n$ sudo chown root /etc/passwd-","ccis":["CCI-000213"]},{"vulnId":"V-281028","ruleId":"SV-281028r1165439_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/passwd-\" file is group-owned by \"root\".","description":"The \"/etc/passwd-\" file is a backup file of \"/etc/passwd\", and as such contains information about the users that are configured on the system. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/passwd-\" file is group-owned by \"root\" with the following command:\n\n$ sudo stat -c \"%G %n\" /etc/passwd-\nroot /etc/passwd-\n\nIf the \"/etc/passwd-\" file does not have a group owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the group of the \"/etc/passwd-\" file is set to \"root\" by running the following command:\n\n$ sudo chgrp root /etc/passwd-","ccis":["CCI-000213"]},{"vulnId":"V-281029","ruleId":"SV-281029r1165442_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/shadow\" file is owned by \"root\".","description":"The \"/etc/shadow\" file contains the list of local system accounts and stores password hashes. Protection of this file is critical for system security. Failure to give ownership of this file to \"root\" provides the designated owner with access to sensitive information, which could weaken the system security posture.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/shadow\" file is owned by \"root\" with the following command:\n\n$ sudo stat -c \"%U %n\" /etc/shadow\nroot /etc/shadow\n\nIf the \"/etc/shadow\" file does not have an owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the owner of the \"/etc/shadow\" file is set to \"root\" by running the following command:\n\n$ sudo chown root /etc/shadow","ccis":["CCI-000213"]},{"vulnId":"V-281030","ruleId":"SV-281030r1165445_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/shadow\" file is group-owned by \"root\".","description":"The \"/etc/shadow\" file stores password hashes. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/shadow\" file is group-owned by \"root\" with the following command:\n\n$ sudo stat -c \"%G %n\" /etc/shadow\nroot /etc/shadow\n\nIf the \"/etc/shadow\" file does not have a group owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the group of the \"/etc/shadow\" file is set to \"root\" by running the following command:\n\n$ sudo chgrp root /etc/shadow","ccis":["CCI-000213"]},{"vulnId":"V-281031","ruleId":"SV-281031r1165448_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/shadow-\" file is owned by \"root\".","description":"The \"/etc/shadow-\" file is a backup file of \"/etc/shadow\", and as such contains the list of local system accounts and password hashes. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/shadow-\" file is owned by \"root\" with the following command:\n\n$ sudo stat -c \"%U %n\" /etc/shadow-\nroot /etc/shadow-\n\nIf the \"/etc/shadow-\" file does not have an owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the owner of the \"/etc/shadow-\" file is set to \"root\" by running the following command:\n\n$ sudo chown root /etc/shadow-","ccis":["CCI-000213"]},{"vulnId":"V-281032","ruleId":"SV-281032r1165451_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/etc/shadow-\" file is group-owned by \"root\".","description":"The \"/etc/shadow-\" file is a backup file of \"/etc/shadow\", and as such contains the list of local system accounts and password hashes. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/shadow-\" file is group-owned by \"root\" with the following command:\n\n$ sudo stat -c \"%G %n\" /etc/shadow-\nroot /etc/shadow-\n\nIf the \"/etc/shadow-\" file does not have a group owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the group of the \"/etc/shadow-\" file is set to \"root\" by running the following command:\n\n$ sudo chgrp root /etc/shadow-","ccis":["CCI-000213"]},{"vulnId":"V-281033","ruleId":"SV-281033r1165454_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/var/log\" directory is owned by \"root\".","description":"Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 10 system or platform. Additionally, personally identifiable information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives.\n\nThe structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.","checkContent":"Verify RHEL 10 is configured so that the \"/var/log\" directory is owned by \"root\" with the following command:\n\n$ stat -c \"%U %n\" /var/log\nroot /var/log\n\nIf \"/var/log\" does not have an owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the owner of the directory \"/var/log\" is set to \"root\" by running the following command:\n\n$ sudo chown root /var/log","ccis":["CCI-001314"]},{"vulnId":"V-281034","ruleId":"SV-281034r1165457_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/var/log\" directory is group-owned by \"root\".","description":"Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 10 system or platform. Additionally, personally identifiable information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives.\n\nThe structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.","checkContent":"Verify RHEL 10 is configured so that the \"/var/log\" directory is group-owned by \"root\" with the following command:\n\n$ stat -c \"%G %n\" /var/log\nroot /var/log\n\nIf \"/var/log\" does not have a group owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the group owner of the directory \"/var/log\" is set to \"root\" by running the following command:\n\n$ sudo chgrp root /var/log","ccis":["CCI-001314"]},{"vulnId":"V-281035","ruleId":"SV-281035r1165460_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/var/log/\"messages file is owned by root.","description":"Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 10 system or platform. Additionally, personally identifiable information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives.\n\nThe structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.","checkContent":"Verify RHEL 10 is configured so that the \"/var/log/messages\" file is owned by root with the following command:\n\n$ stat -c \"%U %n\" /var/log/messages\nroot /var/log/messages\n\nIf \"/var/log/messages\" does not have an owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the owner of the \"/var/log/messages\" file is set to \"root\" by running the following command:\n\n$ sudo chown root /var/log/messages","ccis":["CCI-001314"]},{"vulnId":"V-281036","ruleId":"SV-281036r1165463_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the \"/var/log/messages\" file is group-owned by \"root\".","description":"Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 10 system or platform. Additionally, personally identifiable information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives.\n\nThe structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.","checkContent":"Verify RHEL 10 is configured so that the \"/var/log/messages\" file is group-owned by \"root\" with the following command:\n\n$ stat -c \"%G %n\" /var/log/messages\nroot /var/log/messages\n\nIf \"/var/log/messages\" does not have a group owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the group owner of the \"/var/log/messages\" file is set to \"root\" by running the following command:\n\n$ sudo chgrp root /var/log/messages","ccis":["CCI-001314"]},{"vulnId":"V-281037","ruleId":"SV-281037r1165466_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that system commands are owned by \"root\".","description":"If RHEL 10 allowed any user to make changes to software libraries, those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to RHEL 10 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"Verify RHEL 10 is configured so that the system commands contained in the following directories are owned by \"root\" with the following command:\n\n$ 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\" {} \\;\n\nIf any system commands are found to not be owned by root, this is a finding.","fixText":"Configure RHEL 10 so that the system commands are protected from unauthorized access.\n\nRun the following command, replacing \"[FILE]\" with any system command file not owned by \"root\".\n\n$ sudo chown root [FILE]","ccis":["CCI-001499"]},{"vulnId":"V-281038","ruleId":"SV-281038r1184683_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that system commands are group-owned by root or a system account.","description":"If RHEL 10 allowed any user to make changes to software libraries, those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to RHEL 10 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"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:\n\n$ 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\" {} \\;\n\nIf any system commands are returned and are not group-owned by \"root\" or a required system account, this is a finding.","fixText":"Configure RHEL 10 so that the system commands are protected from unauthorized access.\n\nRun the following command, replacing \"[FILE]\" with any system command file not group-owned by \"root\" or a required system account.\n\n$ sudo chgrp root [FILE]","ccis":["CCI-001499"]},{"vulnId":"V-281039","ruleId":"SV-281039r1165472_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that library files are owned by \"root\".","description":"If RHEL 10 allowed any user to make changes to software libraries, those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to RHEL 10 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"Verify RHEL 10 is configured so that the systemwide shared library files are owned by \"root\" with the following command:\n\n$ sudo find -L /lib /lib64 /usr/lib /usr/lib64 ! -user root ! -type d -exec stat -L -c \"%U %n\" {} \\;\n\nIf any systemwide shared library file is not owned by root, this is a finding.","fixText":"Configure RHEL 10 so that the systemwide shared library files (/lib, /lib64, /usr/lib, and /usr/lib64) are protected from unauthorized access.\n\nRun the following command, replacing \"[FILE]\" with any library file not owned by \"root\".\n\n$ sudo chown root [FILE]","ccis":["CCI-001499"]},{"vulnId":"V-281040","ruleId":"SV-281040r1184734_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that library files are group-owned by \"root\" or a system account.","description":"If RHEL 10 allowed any user to make changes to software libraries, those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to RHEL 10 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"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:\n\n$ sudo find -L /lib /lib64 /usr/lib /usr/lib64 ! -group root ! -type d -exec stat -L -c \"%G %n\" {} \\;\n\nIf any systemwide shared library file is returned and is not group-owned by \"root\" or a required system account, this is a finding.","fixText":"Configure RHEL 10 so that the systemwide shared library files (/lib, /lib64, /usr/lib, and /usr/lib64) are protected from unauthorized access.\n\nRun the following command, replacing \"[FILE]\" with any library file not group-owned by \"root\".\n\n$ sudo chgrp root [FILE]","ccis":["CCI-001499"]},{"vulnId":"V-281041","ruleId":"SV-281041r1165478_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that library directories are owned by \"root\".","description":"If RHEL 10 allowed any user to make changes to software libraries, those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to RHEL 10 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"Verify RHEL 10 is configured so that the systemwide shared library directories are owned by \"root\" with the following command:\n\n$ sudo find /lib /lib64 /usr/lib /usr/lib64 ! -user root -type d -exec stat -c \"%U %n\" {} \\;\n\nIf any systemwide shared library directory is not owned by \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the systemwide shared library directories (/lib, /lib64, /usr/lib, and /usr/lib64) are protected from unauthorized access.\n\nRun the following command, replacing \"[DIRECTORY]\" with any library directory not owned by \"root\".\n\n$ sudo chown root [DIRECTORY]","ccis":["CCI-001499"]},{"vulnId":"V-281042","ruleId":"SV-281042r1184676_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that library directories are group-owned by \"root\" or a system account.","description":"If RHEL 10 allowed any user to make changes to software libraries, those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to RHEL 10 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"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:\n\n$ sudo find /lib /lib64 /usr/lib /usr/lib64 ! -group root -type d -exec stat -c \"%G %n\" {} \\;\n\nIf any systemwide shared library directory is returned and is not group-owned by \"root\" or a required system account, this is a finding.","fixText":"Configure RHEL 10 so that the systemwide shared library directories (/lib, /lib64, /usr/lib and /usr/lib64) are protected from unauthorized access.\n\nRun the following command, replacing \"[DIRECTORY]\" with any library directory not group-owned by \"root\".\n\n$ sudo chgrp root [DIRECTORY]","ccis":["CCI-001499"]},{"vulnId":"V-281043","ruleId":"SV-281043r1184617_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that cron configuration file directories are owned by root.","description":"Service configuration files enable or disable features of their respective services, which if configured incorrectly could lead to insecure and vulnerable configurations. Therefore, service configuration files must be owned by the correct group to prevent unauthorized changes.","checkContent":"Verify RHEL 10 ownership of all cron configuration files with the following command:\n\n$ stat -c \"%U %n\" /etc/cron*\nroot /etc/cron.d\nroot /etc/cron.daily\nroot /etc/cron.deny\nroot /etc/cron.hourly\nroot /etc/cron.monthly\nroot /etc/crontab\nroot /etc/cron.weekly\n\nIf any crontab is not owned by root, this is a finding.","fixText":"Configure RHEL 10 so that cron configuration file directories are owned by root with the following command:\n\n$ sudo chown root [cron config file]","ccis":["CCI-002696"]},{"vulnId":"V-281044","ruleId":"SV-281044r1184618_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that cron configuration files directories are group-owned by root.","description":"Service configuration files enable or disable features of their respective services, which if configured incorrectly can lead to insecure and vulnerable configurations. Therefore, service configuration files should be owned by the correct group to prevent unauthorized changes.","checkContent":"Verify RHEL 10 group ownership of all cron configuration files with the following command:\n\n$ stat -c \"%G %n\" /etc/cron*\nroot /etc/cron.d\nroot /etc/cron.daily\nroot /etc/cron.deny\nroot /etc/cron.hourly\nroot /etc/cron.monthly\nroot /etc/crontab\nroot /etc/cron.weekly\n\nIf any crontab is not group-owned by \"root\", this is a finding.","fixText":"Configure RHEL 10 so that any cron configuration file directories are group-owned by \"root\" with the following command:\n\n$ sudo chgrp root [cron config file]","ccis":["CCI-000213"]},{"vulnId":"V-281045","ruleId":"SV-281045r1165490_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that world-writable directories are owned by root, sys, bin, or an application user.","description":"If a world-writable directory is not owned by root, sys, bin, or an application user identifier (UID), unauthorized users may be able to modify files created by others.\n\nThe only authorized public directories are temporary directories supplied with the system or those designed to be temporary file repositories. The setting is normally reserved for directories used by the system and by users for temporary file storage, (e.g., /tmp), and for directories requiring global read/write access.","checkContent":"Verify RHEL 10 world-writable directories are owned by root, a system account, or an application account with the following command:\n\n$ sudo find / -xdev -type d -perm -0002 -uid +999 -exec stat -c \"%U, %u, %A, %n\" {} \\; 2>/dev/null\n\nIf output indicates that world-writable directories are owned by any account other than root or an approved system account, this is a finding.","fixText":"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.\n\nUse the following command template to set ownership of public directories to root or a system account:\n\n$ sudo chown [root or system account] [Public Directory]","ccis":["CCI-001090"]},{"vulnId":"V-281046","ruleId":"SV-281046r1165493_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that all system device files are correctly labeled to prevent unauthorized modification.","description":"If an unauthorized or modified device is allowed to exist on the system, the system may perform unintended or unauthorized operations.","checkContent":"Verify RHEL 10 is configured so that all system device files are correctly labeled to prevent unauthorized modification.\n\nList all device files on the system that are incorrectly labeled with the following commands:\n\nNote: 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.\n\n$ sudo find /dev -context *:device_t:* \\( -type c -o -type b \\) -printf \"%p %Z\\n\"\n\n$ sudo find /dev -context *:unlabeled_t:* \\( -type c -o -type b \\) -printf \"%p %Z\\n\"\n\nNote: 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.\n\nIf there is output from either of these commands, other than already noted, this is a finding.","fixText":"Configure RHEL 10 so that all system device files are correctly labeled to prevent unauthorized modification.\n\nRestore the SELinux policy for the affected device file from the system policy database using the following command:\n\n$ sudo restorecon -v <device_path>\n\nSubstitute \"<device_path>\" with the path to the affected device file (from the output of the previous commands). An example device file path would be \"/dev/ttyUSB0\". \n\nIf 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. \n\nIf a package was used to install support for a device class, that package could be reinstalled using the following command:\n\n$ sudo dnf reinstall <package_name>\n\nIf 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.","ccis":["CCI-000213"]},{"vulnId":"V-281047","ruleId":"SV-281047r1184647_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the Secure Shell (SSH) server configuration file is group-owned by \"root\".","description":"Service configuration files enable or disable features of their respective services, which if configured incorrectly can lead to insecure and vulnerable configurations. Therefore, service configuration files must be owned by the correct group to prevent unauthorized changes.","checkContent":"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:\n\n$ sudo find /etc/ssh/sshd_config /etc/ssh/sshd_config.d -exec stat -c \"%G %n\" {} \\;\nroot /etc/ssh/sshd_config\nroot /etc/ssh/sshd_config.d\nroot /etc/ssh/sshd_config.d/50-cloud-init.conf\nroot /etc/ssh/sshd_config.d/50-redhat.conf\n\nIf 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.","fixText":"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:\n\n$ sudo chgrp root /etc/ssh/sshd_config /etc/ssh/sshd_config.d","ccis":["CCI-000213"]},{"vulnId":"V-281048","ruleId":"SV-281048r1184648_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the Secure Shell (SSH) server configuration file is owned by \"root\".","description":"Service configuration files enable or disable features of their respective services, which if configured incorrectly can lead to insecure and vulnerable configurations. Therefore, service configuration files must be owned by the correct group to prevent unauthorized changes.","checkContent":"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:\n\n$ sudo find /etc/ssh/sshd_config /etc/ssh/sshd_config.d -exec stat -c \"%U %n\" {} \\;\nroot /etc/ssh/sshd_config\nroot /etc/ssh/sshd_config.d\nroot /etc/ssh/sshd_config.d/50-cloud-init.conf\nroot /etc/ssh/sshd_config.d/50-redhat.conf\n\nIf 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.","fixText":"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:\n\n$ sudo chown -R root /etc/ssh/sshd_config /etc/ssh/sshd_config.d","ccis":["CCI-000213"]},{"vulnId":"V-281049","ruleId":"SV-281049r1197223_rule","severity":"medium","ruleTitle":"RHEL 10 must ensure that all local interactive user home directories are group-owned by the home directory owner's primary group.","description":"If the group identifier (GID) of a local interactive user's home directory is not the same as the primary GID of the user, this would allow unauthorized access to the user's files. Users who share the same group may not be able to access files that they legitimately should be able to access.\n\nSatisfies: SRG-OS-000080-GPOS-00048, SRG-OS-000420-GPOS-00186","checkContent":"Verify RHEL 10 interactive users' home directories are group-owned by the user's primary GID with the following command:\n\nNote: 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.\n\n$ sudo ls -ld $(awk -F: '($3>=1000)&&($7 !~ /nologin/){print $6}' /etc/passwd)\ndrwxr-x--- 2 disauser admin 4096 Jun 5 12:41 disauser\n\nCheck the user's primary group with the following command:\n\n$ sudo grep $(grep disauser /etc/passwd | awk -F: '{print $4}') /etc/group\nadmin:x:250:disauser,doduser,nsauser\n\nIf the user home directory referenced in \"/etc/passwd\" is not group-owned by that user's primary GID, this is a finding.","fixText":"Configure RHEL 10 interactive users' home directories to be group-owned by the user's primary GID.\n\nChange 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:\n\nNote: The example will be for the user \"disauser\", who has a home directory of \"/home/disauser\" and has a primary group of users.\n\n$ sudo chgrp users /home/disauser","ccis":["CCI-000213","CCI-002385"]},{"vulnId":"V-281050","ruleId":"SV-281050r1184685_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce group ownership of audit logs by \"root\" or by a restricted logging group to prevent unauthorized read access.","description":"Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality.\n\nSatisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029, SRG-OS-000206-GPOS-00084","checkContent":"Verify RHEL 10 audit logs are group-owned by \"root\" or a restricted logging group.\n\nDetermine where the audit logs are stored with the following command:\n\n$ sudo grep -iw log_file /etc/audit/auditd.conf\nlog_file = /var/log/audit/audit.log\n\nUsing the location of the audit log file, determine if the audit log is group-owned by \"root\" using the following command:\n\n$ sudo stat -c \"%G %n\" /var/log/audit/audit.log\nroot /var/log/audit/audit.log\n\nIf the audit log is not group-owned by \"root\" or the configured alternative logging group, this is a finding.","fixText":"Configure RHEL 10 to prevent unauthorized read access by ensuring that audit logs are group-owned by root or by a restricted logging group.\n\nChange the group of the directory of \"/var/log/audit\" to be owned by a correct group.\n\nIdentify the group that is configured to own audit logs:\n\n$ sudo grep -P '^[ ]*log_group[ ]+=.*$' /etc/audit/auditd.conf\n\nChange the ownership to that group:\n\n$ sudo chgrp ${GROUP} /var/log/audit","ccis":["CCI-000162","CCI-000163","CCI-000164","CCI-001314"]},{"vulnId":"V-281051","ruleId":"SV-281051r1165508_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce \"root\" ownership of the audit log directory to prevent unauthorized read access.","description":"Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality.\n\nSatisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029, SRG-OS-000206-GPOS-00084","checkContent":"Verify RHEL 10 audit logs directory is owned by \"root\".\n\nDetermine where the audit logs are stored with the following command:\n\n$ sudo grep -iw log_file /etc/audit/auditd.conf\nlog_file = /var/log/audit/audit.log\n\nUsing the location of the audit log file, determine if the audit log directory is owned by \"root\" using the following command:\n\n$ sudo stat -c '%U %n' /var/log/audit\nroot /var/log/audit\n\nIf the audit log directory is not owned by \"root\", this is a finding.","fixText":"Configure RHEL 10 to prevent unauthorized read access by ensuring the audit log directory is \"root\" owned with the following command:\n\n$ sudo chown root /var/log/audit","ccis":["CCI-000162","CCI-000163","CCI-000164","CCI-001314"]},{"vulnId":"V-281052","ruleId":"SV-281052r1165511_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce \"root\" ownership of audit logs to prevent unauthorized access.","description":"Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality.\n\nSatisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029, SRG-OS-000206-GPOS-00084","checkContent":"Verify RHEL 10 enforces \"root\" ownership of audit logs to prevent unauthorized access.\n\nDetermine where the audit logs are stored with the following command:\n\n$ sudo grep \"^log_file\" /etc/audit/auditd.conf\nlog_file = /var/log/audit/audit.log\n\nUsing the location of the audit log file, determine if the audit log files are owned by \"root\" using the following command:\n\n$ sudo ls -la /var/log/audit/audit.log\nrw-------. 2 root root 237923 Jun 11 11:56 /var/log/audit/audit.log\n\nIf the audit logs are not owned by \"root\", this is a finding.","fixText":"Configure RHEL 10 to enforce \"root\" ownership of audit logs to prevent unauthorized access with the following command:\n\n$ sudo chown root [audit_log_file]\n\nReplace \"[audit_log_file]\" with the correct audit log path. By default this location is \"/var/log/audit/audit.log\".","ccis":["CCI-000162","CCI-000163","CCI-000164","CCI-001314"]},{"vulnId":"V-281053","ruleId":"SV-281053r1165514_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce group ownership by \"root\" or a restricted logging group for audit log files to prevent unauthorized access.","description":"Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality.\n\nSatisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029, SRG-OS-000206-GPOS-00084","checkContent":"Verify RHEL 10 enforces group ownership by \"root\" or a restricted logging group for audit log files to prevent unauthorized access.\n\nDetermine where the audit logs are stored with the following command:\n\n$ sudo grep \"^log_file\" /etc/audit/auditd.conf\nlog_file = /var/log/audit/audit.log\n\nDetermine the audit log group by running the following command:\n\n$ sudo grep -P '^[ ]*log_group[ ]+=.*$' /etc/audit/auditd.conf\nlog_group = root\n\nCheck that the audit log file is owned by the correct group. Run the following command to display the owner of the audit log file:\n\n$ sudo stat -c \"%n %G\" /var/log/audit/audit.log\n/var/log/audit/audit.log root\n\nThe audit log file must be owned by the \"log_group\" or by \"root\" if the \"log_group\" is not specified.\n\nIf audit log files are owned by the incorrect group, this is a finding.","fixText":"Configure RHEL 10 to enforce group ownership by \"root\" or a restricted logging group for audit log files to prevent unauthorized access.\n\nIdentify the group that is configured to own the audit log:\n\n$ sudo grep -P '^[ ]*log_group[ ]+=.*$' /etc/audit/auditd.conf\n\nChange the ownership to that group using the following command:\n\n$ sudo chgrp ${log_group} ${log_file}","ccis":["CCI-000162","CCI-000163","CCI-000164","CCI-001314"]},{"vulnId":"V-281054","ruleId":"SV-281054r1197224_rule","severity":"medium","ruleTitle":"RHEL 10 must set mode \"0600\" or less permissive for the audit logs file to prevent unauthorized access to the audit log.","description":"Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 10 system or platform. Additionally, personally identifiable information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives.\n\nThe structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.\n\nSatisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029, SRG-OS-000206-GPOS-00084","checkContent":"Verify RHEL 10 audit logs have a mode of \"0600\".\n\nDetermine where the audit logs are stored with the following command:\n\n$ sudo grep \"^log_file\" /etc/audit/auditd.conf\nlog_file = /var/log/audit/audit.log\n\nUsing the location of the audit log file, determine the mode of each audit log with the following command:\n\n$ sudo find /var/log/audit/ -type f -exec stat -c '%a %n' {} \\;\n600 /var/log/audit/audit.log\n\nIf the audit logs have a mode more permissive than \"0600\", this is a finding.","fixText":"Configure RHEL 10 audit logs to have a mode of \"0600\" with the following command:\n\nReplace \"[audit_log_file]\" with the path to each audit log file. By default, these logs are located in \"/var/log/audit/\":\n\n$ sudo chmod 0600 /var/log/audit/[audit_log_file]\n\nCheck the group that owns the system audit logs:\n\n$ sudo grep -iw log_group /etc/audit/auditd.conf\n\nIf \"log_group\" is set to a user other than \"root\", configure the permissions the following way:\n\n$ sudo chmod 0640 $log_file\n$ sudo chmod 0440 $log_file.*\n\nOtherwise, configure the permissions the following way:\n\n$ sudo chmod 0600 $log_file\n$ sudo chmod 0400 $log_file.*","ccis":["CCI-000162","CCI-000163","CCI-000164","CCI-001314"]},{"vulnId":"V-281055","ruleId":"SV-281055r1165520_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce the audit log directory to have a mode of \"0750\" or less permissive to prevent unauthorized read access.","description":"If users can write to audit logs, audit trails can be modified or destroyed.\n\nSatisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029","checkContent":"Verify RHEL 10 enforces the audit log directory to have a mode of \"0750\" or less permissive to prevent unauthorized read access.\n\nDetermine where the audit logs are stored with the following command:\n\n$ sudo grep \"^log_file\" /etc/audit/auditd.conf\nlog_file = /var/log/audit/audit.log\n\nFind the group that owns audit logs:\n\n$ sudo grep \"^log_group\" /etc/audit/auditd.conf\nlog_group = root\n\nRun the following command to check the mode of the system audit logs:\n\n$ sudo stat -c \"%a %n\" [audit_log_directory]\n\nReplace \"[audit_log_directory]\" to the correct audit log directory path; by default this location is \"/var/log/audit\".\n\nIf the log_group is \"root\" or is not set, the correct permissions are \"0700\".\n \nIf the log_group is owned by anyone other than \"root\", the correct permissions are \"0750\".\n\nIf audit logs have a more permissive mode than is required, this is a finding.","fixText":"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:\n\n$ sudo chmod 0700 /var/log/audit\n\nNote: The correct permissions are \"0700\" if the directory is owned by \"root\"; otherwise, the correct permissions are \"0750\".\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000162","CCI-000163","CCI-000164"]},{"vulnId":"V-281056","ruleId":"SV-281056r1165523_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce root ownership of the \"/etc/audit/\" directory.","description":"The \"/etc/audit/\" directory contains files that ensure the proper auditing of command execution, privilege escalation, file manipulation, and more. Protection of this directory is critical for system security.","checkContent":"Verify RHEL 10 enforces root ownership of the \"/etc/audit/\" directory with the following command:\n\n$ sudo stat -c \"%U %n\" /etc/audit/\nroot /etc/audit/\n\nIf the \"/etc/audit/\" directory does not have an owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the \"/etc/audit/\" directory is owned by \"root\" with the following command:\n\n$ sudo chown root /etc/audit/","ccis":["CCI-000171"]},{"vulnId":"V-281057","ruleId":"SV-281057r1165526_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce root group ownership of the \"/etc/audit/\" directory.","description":"The \"/etc/audit/\" directory contains files that ensure the proper auditing of command execution, privilege escalation, file manipulation, and more. Protection of this directory is critical for system security.","checkContent":"Verify RHEL 10 enforces root group ownership of the \"/etc/audit/\" directory with the following command:\n\n$ sudo stat -c \"%G %n\" /etc/audit/\nroot /etc/audit/\n\nIf \"/etc/audit/\" does not have a group owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the \"/etc/audit/\" directory is group-owned by \"root\" with the following command:\n\n$ sudo chgrp root /etc/audit/","ccis":["CCI-000171"]},{"vulnId":"V-281058","ruleId":"SV-281058r1165529_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"755\" or less permissive for system commands.","description":"If RHEL 10 allowed any user to make changes to software libraries, those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to RHEL 10 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"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:\n\n$ sudo find -L /bin /sbin /usr/bin /usr/sbin /usr/libexec /usr/local/bin /usr/local/sbin -perm /022 -exec ls -l {} \\;\n\nIf any system commands are found to be group-writable or world-writable, this is a finding.","fixText":"Configure RHEL 10 so that the system commands to be protected from unauthorized access.\n\nRun the following command, replacing \"[FILE]\" with any system command with a mode more permissive than \"755\".\n\n$ sudo chmod 755 [FILE]","ccis":["CCI-001499"]},{"vulnId":"V-281059","ruleId":"SV-281059r1165532_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"755\" or less permissive on library directories.","description":"If RHEL 10 allowed any user to make changes to software libraries, those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to RHEL 10 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"Verify RHEL 10 is configured so that the systemwide shared library directories have mode \"755\" or less permissive with the following command:\n\n$ sudo find -L /lib /lib64 /usr/lib /usr/lib64 -perm /022 -type d -exec ls -l {} \\;\n\nIf any systemwide shared library file is found to be group-writable or world-writable, this is a finding.","fixText":"Configure RHEL 10 so that the systemwide shared library directories (/lib, /lib64, /usr/lib, and /usr/lib64) are protected from unauthorized access.\n\nRun the following command, replacing \"[DIRECTORY]\" with any library directory with a mode more permissive than \"755\".\n\n$ sudo chmod 755 [DIRECTORY]","ccis":["CCI-001499"]},{"vulnId":"V-281060","ruleId":"SV-281060r1165535_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"755\" or less permissive for library files.","description":"If RHEL 10 allowed any user to make changes to software libraries, those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to RHEL 10 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"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:\n\n$ sudo find -L /lib /lib64 /usr/lib /usr/lib64 -perm /022 -type f -exec ls -l {} \\;\n\nIf any systemwide shared library file is found to be group-writable or world-writable, this is a finding.","fixText":"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\".\n\n$ sudo chmod 755 [FILE]","ccis":["CCI-001499"]},{"vulnId":"V-281061","ruleId":"SV-281061r1165538_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"0755\" or less permissive for the \"/var/log\" directory.","description":"Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 10 system or platform. Additionally, personally identifiable information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives.\n\nThe structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.","checkContent":"Verify RHEL 10 is configured so that the \"/var/log\" directory has a mode of \"0755\" or less permissive with the following command:\n\n$ stat -c '%a %n' /var/log\n755 /var/log\n\nIf \"/var/log\" does not have a mode of \"0755\" or less permissive, this is a finding.","fixText":"Configure RHEL 10 so that the \"/var/log\" directory has a mode of \"0755\" by running the following command:\n\n$ sudo chmod 0755 /var/log","ccis":["CCI-001314"]},{"vulnId":"V-281062","ruleId":"SV-281062r1165541_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"0640\" or less permissive for the \"/var/log/messages\" file.","description":"Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 10 system or platform. Additionally, personally identifiable information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives.\n\nThe structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.","checkContent":"Verify RHEL 10 is configured so that the \"/var/log/messages\" file has a mode of \"0640\" or less permissive with the following command:\n\n$ stat -c '%a %n' /var/log/messages\n600 /var/log/messages\n\nIf \"/var/log/messages\" does not have a mode of \"0640\" or less permissive, this is a finding.","fixText":"Configure RHEL 10 so that the \"/var/log/messages\" file has a mode of \"0640\" by running the following command:\n\n$ sudo chmod 0640 /var/log/messages","ccis":["CCI-001314"]},{"vulnId":"V-281063","ruleId":"SV-281063r1195403_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured to prohibit modification of permissions for cron configuration files and directories from the operating system defaults.","description":"If the permissions of cron configuration files or directories are modified from the operating system defaults, it may be possible for individuals to insert unauthorized cron jobs that perform unauthorized actions, including potentially escalating privileges.","checkContent":"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:\n\n$ rpm --verify cronie crontabs | awk '! ($2 == \"c\" && $1 ~ /^.\\..\\.\\.\\.\\..\\./) {print $0}'\n\nIf the command returns any output, this is a finding.","fixText":"Configure RHEL 10 to prohibit modification of permissions for cron configuration files and directories from the operating system defaults with the following commands:\n\n$ sudo dnf reinstall cronie crontabs\n$ rpm --setugids cronie crontabs\n$ rpm --setperms cronie crontabs","ccis":["CCI-000381"]},{"vulnId":"V-281064","ruleId":"SV-281064r1165547_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"0740\" or less permissive for local initialization files.","description":"Local initialization files are used to configure the user's shell environment upon login. Malicious modification of these files could compromise accounts upon login.","checkContent":"Verify RHEL 10 is configured so that all local initialization files have a mode of \"0740\" or less permissive with the following command:\n\nNote: The example will be for the \"disauser\" user, who has a home directory of \"/home/disauser\".\n\n$ sudo find /home -maxdepth 2 -type f -name \".*\" -exec stat -c \"%n %a\" {} \\; | awk '$2 > 740'\n/home/disauser/.bash_profile 770 \n\nIf any local initialization files are returned, this indicates a mode more permissive than \"0740\", and this is a finding.","fixText":"Configure RHEL 10 so that all local initialization files have a mode of \"0740\" or less permissive with the following command:\n\nNote: The example will be for the \"disauser\" user, who has a home directory of \"/home/disauser\".\n\n$ sudo chmod 0740 /home/disauser/.<INIT_FILE>","ccis":["CCI-000213"]},{"vulnId":"V-281065","ruleId":"SV-281065r1165550_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"0750\" or less permissive for local interactive user home directories.","description":"Excessive permissions on local interactive user home directories may allow unauthorized access to user files by other users.","checkContent":"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:\n\nNote: 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.\n\n$ stat -L -c '%a %n' $(awk -F: '($3>=1000)&&($7 !~ /nologin/){print $6}' /etc/passwd) 2>/dev/null\n700 /home/disauser\n\nIf home directories referenced in \"/etc/passwd\" do not have a mode of \"0750\" or less permissive, this is a finding.","fixText":"Configure RHEL 10 so that the mode of interactive user's home directories is set to \"0750\". \n\nTo change the mode of a local interactive user's home directory, use the following command:\n\nNote: The example will be for the user \"disauser\".\n\n$ sudo chmod 0750 /home/disauser","ccis":["CCI-000213"]},{"vulnId":"V-281066","ruleId":"SV-281066r1165553_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"0644\" or less permissive for the \"/etc/group\" file to prevent unauthorized access.","description":"The \"/etc/group\" file contains information regarding groups that are configured on the system. Protection of this file is important for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/group\" file has mode \"0644\" or less permissive with the following command:\n\n$ sudo stat -c \"%a %n\" /etc/group\n644 /etc/group\n\nIf a value of \"0644\" or less permissive is not returned, this is a finding.","fixText":"Configure RHEL 10 so that the mode of the file \"/etc/group\" is set to \"0644\" by running the following command:\n\n$ sudo chmod 0644 /etc/group","ccis":["CCI-000213"]},{"vulnId":"V-281067","ruleId":"SV-281067r1165556_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"0644\" or less permissive for the \"/etc/group-\" file to prevent unauthorized access.","description":"The \"/etc/group-\" file is a backup file of \"/etc/group\", and as such contains information regarding groups that are configured on the system. Protection of this file is important for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/group-\" file has mode \"0644\" or less permissive with the following command:\n\n$ sudo stat -c \"%a %n\" /etc/group-\n644 /etc/group-\n\nIf a value of \"0644\" or less permissive is not returned, this is a finding.","fixText":"Configure RHEL 10 so that the mode of the \"/etc/group-\" file is set to \"0644\" by running the following command:\n\n$ sudo chmod 0644 /etc/group-","ccis":["CCI-000213"]},{"vulnId":"V-281068","ruleId":"SV-281068r1165559_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"0000\" or less permissive for the \"/etc/gshadow\" file to prevent unauthorized access.","description":"The \"/etc/gshadow\" file contains group password hashes. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/gshadow\" file has mode \"0000\" with the following command:\n\n$ sudo stat -c \"%a %n\" /etc/gshadow\n0 /etc/gshadow\n\nIf a value of \"0\" is not returned, this is a finding.","fixText":"Configure RHEL 10 so that the mode of the \"/etc/gshadow\" file is set to \"0000\" by running the following command:\n\n$ sudo chmod 0000 /etc/gshadow","ccis":["CCI-000213"]},{"vulnId":"V-281069","ruleId":"SV-281069r1165562_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"0000\" or less permissive for the \"/etc/gshadow-\" file to prevent unauthorized access.","description":"The \"/etc/gshadow-\" file is a backup of \"/etc/gshadow\", and as such contains group password hashes. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/gshadow-\" file has mode \"0000\" with the following command:\n\n$ sudo stat -c \"%a %n\" /etc/gshadow-\n0 /etc/gshadow-\n\nIf a value of \"0\" is not returned, this is a finding.","fixText":"Configure RHEL 10 so that the mode of the \"/etc/gshadow-\" file is set to \"0000\" by running the following command:\n\n$ sudo chmod 0000 /etc/gshadow-","ccis":["CCI-000213"]},{"vulnId":"V-281070","ruleId":"SV-281070r1165565_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"0644\" or less permissive for the \"/etc/passwd\" file to prevent unauthorized access.","description":"If the \"/etc/passwd\" file is writable by a group-owner or the world, the risk of its compromise is increased. The file contains the list of accounts on the system and associated information, and protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/passwd\" file has mode \"0644\" or less permissive with the following command:\n\n$ sudo stat -c \"%a %n\" /etc/passwd\n644 /etc/passwd\n\nIf a value of \"0644\" or less permissive is not returned, this is a finding.","fixText":"Configure RHEL 10 so that the mode of the file \"/etc/passwd\" is set to \"0644\" by running the following command:\n\n$ sudo chmod 0644 /etc/passwd","ccis":["CCI-000213"]},{"vulnId":"V-281071","ruleId":"SV-281071r1165568_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"0644\" or less permissive for \"/etc/passwd-\" file to prevent unauthorized access.","description":"The \"/etc/passwd-\" file is a backup file of \"/etc/passwd\", and as such contains information about the users that are configured on the system. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/passwd-\" file has mode \"0644\" or less permissive with the following command:\n\n$ sudo stat -c \"%a %n\" /etc/passwd-\n644 /etc/passwd-\n\nIf a value of \"0644\" or less permissive is not returned, this is a finding.","fixText":"Configure RHEL 10 so that the mode of the \"/etc/passwd-\" file is set to \"0644\" by running the following command:\n\n$ sudo chmod 0644 /etc/passwd-","ccis":["CCI-000213"]},{"vulnId":"V-281072","ruleId":"SV-281072r1165571_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"0000\" or less permissive for \"/etc/shadow-\" file to prevent unauthorized access.","description":"The \"/etc/shadow-\" file is a backup file of \"/etc/shadow\", and as such contains the list of local system accounts and password hashes. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/shadow-\" file has mode \"0000\" with the following command:\n\n$ sudo stat -c \"%a %n\" /etc/shadow-\n0 /etc/shadow-\n\nIf a value of \"0\" is not returned, this is a finding.","fixText":"Configure RHEL 10 so that the mode of the \"/etc/shadow-\" file is set to \"0000\" by running the following command:\n\n$ sudo chmod 0000 /etc/shadow-","ccis":["CCI-000213"]},{"vulnId":"V-281073","ruleId":"SV-281073r1165574_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that a sticky bit is set on all public directories.","description":"Preventing unauthorized information transfers mitigates the risk of information, including encrypted representations of information, produced by the actions of prior users/roles (or the actions of processes acting on behalf of prior users/roles) from being available to any current users/roles (or current processes) that obtain access to shared system resources (e.g., registers, main memory, hard disks) after those resources have been released back to information systems. The control of information in shared resources is also commonly referred to as object reuse and residual information protection.\n\nThis requirement generally applies to the design of an information technology product, but it can also apply to the configuration of information system components that are, or use, such products. This can be verified by acceptance/validation processes in DOD or other government agencies.","checkContent":"Verify RHEL 10 is configured so that all world-writable directories have the sticky bit set with the following command:\n\n$ sudo find / -type d \\( -perm -0002 -a ! -perm -1000 \\) -print 2>/dev/null\ndrwxrwxrwt 7 root root 4096 Jul 26 11:19 /tmp\n\nIf any of the returned directories are world-writable and do not have the sticky bit set, this is a finding.","fixText":"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.\n\nSet the sticky bit on all world-writable directories using the following command (replace \"[World-Writable Directory]\" with any directory path missing the sticky bit):\n\n$ chmod a+t [World-Writable Directory]","ccis":["CCI-001090"]},{"vulnId":"V-281074","ruleId":"SV-281074r1165577_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that all local files and directories have a valid group owner.","description":"Files without a valid group owner may be unintentionally inherited if a group is assigned the same group identifier (GID) as the GID of the files without a valid group owner.","checkContent":"Verify RHEL 10 is configured so that all local files and directories have a valid group with the following command:\n\n$ df --local -P | awk {'if (NR!=1) print $6'} | sudo xargs -I '{}' find '{}' -xdev -nogroup\n\nIf any files on the system do not have an assigned group, this is a finding.","fixText":"Configure RHEL 10 so that all local files and directories have a valid group owner.\n\nEither 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:\n\n$ sudo chgrp <group> <file>","ccis":["CCI-000213"]},{"vulnId":"V-281075","ruleId":"SV-281075r1165580_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that all local files and directories must have a valid owner.","description":"Unowned files and directories may be unintentionally inherited if a user is assigned the same user identifier (UID) as the UID of the unowned files.","checkContent":"Verify RHEL 10 is configured so that all local files and directories have a valid owner with the following command:\n\n$ df --local -P | awk {'if (NR!=1) print $6'} | sudo xargs -I '{}' find '{}' -xdev -nouser\n\nIf any files on the system do not have an assigned owner, this is a finding.","fixText":"Configure RHEL 10 so that all local files and directories must have a valid owner.\n\nEither 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:\n\n$ sudo chown <user> <file>","ccis":["CCI-000213"]},{"vulnId":"V-281076","ruleId":"SV-281076r1165583_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"0000\" for \"/etc/shadow\" to prevent unauthorized access.","description":"The \"/etc/shadow\" file contains the list of local system accounts and stores password hashes. Protection of this file is critical for system security. Failure to give ownership of this file to \"root\" provides the designated owner with access to sensitive information, which could weaken the system security posture.","checkContent":"Verify RHEL 10 is configured so that the \"/etc/shadow\" file has mode \"0000\" with the following command:\n\n$ sudo stat -c \"%a %n\" /etc/shadow\n0 /etc/shadow\n\nIf a value of \"0\" is not returned, this is a finding.","fixText":"Configure RHEL 10 to enforce mode \"0000\" for \"/etc/shadow\" to prevent unauthorized access.\n\nChange the mode of the file \"/etc/shadow\" to \"0000\" by running the following command:\n\n$ sudo chmod 0000 /etc/shadow","ccis":["CCI-000213"]},{"vulnId":"V-281077","ruleId":"SV-281077r1165586_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that audit tools are owned by \"root\".","description":"Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information.\n\nRHEL 10 systems providing tools to interface with audit information will leverage user permissions and roles identifying the user accessing the tools, and the corresponding rights the user enjoys, to make access decisions regarding the access to audit tools.\n\nAudit tools include, but are not limited to, vendor-provided and open source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators.\n\nSatisfies: SRG-OS-000256-GPOS-00097, SRG-OS-000257-GPOS-00098, SRG-OS-000258-GPOS-00099","checkContent":"Verify RHEL 10 audit tools are owned by \"root\" with the following command:\n\n$ sudo stat -c \"%U %n\" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/auditd /sbin/rsyslogd /sbin/augenrules\nroot /sbin/auditctl\nroot /sbin/aureport\nroot /sbin/ausearch\nroot /sbin/auditd\nroot /sbin/rsyslogd\nroot /sbin/augenrules\n\nIf any audit tools do not have an owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the audit tools are owned by \"root\" by running the following command:\n\n$ sudo chown root [audit_tool]\n\nReplace \"[audit_tool]\" with each audit tool not owned by \"root\".","ccis":["CCI-001493","CCI-001494","CCI-001495"]},{"vulnId":"V-281078","ruleId":"SV-281078r1165589_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that audit tools are group-owned by \"root\".","description":"Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data; therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information.\n\nRHEL 10 systems providing tools to interface with audit information will leverage user permissions and roles identifying the user accessing the tools, and the corresponding rights the user enjoys, to make access decisions regarding the access to audit tools.\n\nAudit tools include, but are not limited to, vendor-provided and open source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators.\n\nSatisfies: SRG-OS-000256-GPOS-00097, SRG-OS-000257-GPOS-00098, SRG-OS-000258-GPOS-00099","checkContent":"Verify RHEL 10 audit tools are group-owned by \"root\" with the following command:\n\n$ sudo stat -c \"%G %n\" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/auditd /sbin/rsyslogd /sbin/augenrules\nroot /sbin/auditctl\nroot /sbin/aureport\nroot /sbin/ausearch\nroot /sbin/auditd\nroot /sbin/rsyslogd\nroot /sbin/augenrules\n\nIf any audit tools do not have a group owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 so that the audit tools are group-owned by \"root\" by running the following command:\n\n$ sudo chgrp root [audit_tool]\n\nReplace \"[audit_tool]\" with each audit tool not group-owned by \"root\".","ccis":["CCI-001493","CCI-001494","CCI-001495"]},{"vulnId":"V-281079","ruleId":"SV-281079r1165592_rule","severity":"medium","ruleTitle":"RHEL 10 must set the umask value to \"077\" for all local interactive user accounts.","description":"The umask controls the default access mode assigned to newly created files. A umask of \"077\" limits new files to mode 600 or less permissive. Although umask can be represented as a four-digit number, the first digit representing special access modes is typically ignored or required to be \"0\". This requirement applies to the globally configured system defaults and the local interactive user defaults for each account on the system.","checkContent":"Verify RHEL 10 sets the default umask for all local interactive users to \"077\".\n\nIdentify the locations of all local interactive user home directories by looking at the \"/etc/passwd\" file.\n\nCheck all local interactive user initialization files for interactive users with the following command:\n\nNote: The example is for a system that is configured to create users' home directories in the \"/home\" directory.\n\n$ sudo find /home -maxdepth 2 -type f -name \".[^.]*\" -exec grep -iH -d skip --exclude=.bash_history umask {} \\;\n/home/disauser/.bash_history:grep -i umask /etc/bashrc /etc/csh.cshrc /etc/profile\n/home/disauser/.bash_history:grep -i umask /etc/login.defs\n\nIf 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.","fixText":"Configure RHEL 10 to set the umask value for all local interactive user accounts to \"077\".\n\nRemove the umask statement from all local interactive users' initialization files.\n\nIf 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.","ccis":["CCI-000213"]},{"vulnId":"V-281080","ruleId":"SV-281080r1184687_rule","severity":"medium","ruleTitle":"RHEL 10 must define default permissions for the bash shell.","description":"The \"umask\" controls the default access mode assigned to newly created files. A \"umask\" of \"077\" limits new files to mode \"600\" or less permissive. Although \"umask\" can be represented as a four-digit number, the first digit representing special access modes is typically ignored or required to be \"0\". \n\nThis requirement applies to the globally configured system defaults and the local interactive user defaults for each account on the system.","checkContent":"Verify RHEL 10 \"umask\" setting is configured correctly in the \"/etc/bashrc\" file with the following command:\n\nNote: If the value of the \"umask\" parameter is set to \"000\" in the \"/etc/bashrc\" file, the Severity is raised to a CAT I.\n\n$ sudo grep umask /etc/bashrc\n[ `umask` -eq 0 ] && umask 077\n\nIf the value for the \"umask\" parameter is not \"077\", or the \"umask\" parameter is missing or is commented out, this is a finding.","fixText":"Configure RHEL 10 to define default permissions for all authenticated users using the bash shell.\n\nAdd or edit the lines for the \"umask\" parameter in the \"/etc/bashrc\" file to \"077\":\n\numask 077","ccis":["CCI-000213"]},{"vulnId":"V-281081","ruleId":"SV-281081r1184682_rule","severity":"medium","ruleTitle":"RHEL 10 must define default permissions for the c shell.","description":"The \"umask\" controls the default access mode assigned to newly created files. A \"umask\" of \"077\" limits new files to mode \"600\" or less permissive. Although \"umask\" can be represented as a four-digit number, the first digit representing special access modes is typically ignored or required to be \"0\". \n\nThis requirement applies to the globally configured system defaults and the local interactive user defaults for each account on the system.","checkContent":"Verify the RHEL 10 \"umask\" setting is configured correctly in the \"/etc/csh.cshrc\" file with the following command:\n\nNote: 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.\n\n$ sudo grep umask /etc/csh.cshrc\numask 077\n\nIf the value for the \"umask\" parameter is not \"077\", or the \"umask\" parameter is missing or is commented out, this is a finding.","fixText":"Configure RHEL 10 to define default permissions for all authenticated users using the c shell.\n\nAdd or edit the lines for the \"umask\" parameter in the \"/etc/csh.cshrc\" file to \"077\":\n\numask 077","ccis":["CCI-000213"]},{"vulnId":"V-281082","ruleId":"SV-281082r1195406_rule","severity":"medium","ruleTitle":"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.","description":"Setting the most restrictive default permissions ensures that when new accounts are created, they do not have unnecessary access.","checkContent":"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:\n\nNote: If the value of the \"umask\" parameter is set to \"000\" in \"/etc/login.defs\" file, the Severity is raised to a CAT I.\n\n$ sudo grep -i umask /etc/login.defs\numask 077\n\nIf the value for the \"umask\" parameter is not \"077\", or the \"umask\" parameter is missing or is commented out, this is a finding.","fixText":"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.\n\nAdd or edit the lines for the \"umask\" parameter in the \"/etc/login.defs\" file to \"077\":\n\numask 077","ccis":["CCI-000213"]},{"vulnId":"V-281083","ruleId":"SV-281083r1184689_rule","severity":"medium","ruleTitle":"RHEL 10 must define default permissions for the system default profile.","description":"The \"umask\" controls the default access mode assigned to newly created files. A \"umask\" of \"077\" limits new files to mode \"600\" or less permissive. \"Although umask\" can be represented as a four-digit number, the first digit representing special access modes is typically ignored or required to be \"0\". \n\nThis requirement applies to the globally configured system defaults and the local interactive user defaults for each account on the system.","checkContent":"Verify the RHEL 10 \"umask\" setting is configured correctly in the \"/etc/profile\" file with the following command:\n\nNote: If the value of the \"umask\" parameter is set to \"000\" in the \"/etc/profile\" file, the Severity is raised to a CAT I.\n\n$ sudo grep umask /etc/profile\numask 077\n\nIf the value for the \"umask\" parameter is not \"077\", or the \"umask\" parameter is missing or is commented out, this is a finding.","fixText":"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.\n\nAdd or edit the lines for the \"umask\" parameter in the \"/etc/profile\" file to \"077\":\n\numask 077","ccis":["CCI-000213"]},{"vulnId":"V-281084","ruleId":"SV-281084r1165607_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce that all local initialization files configured by systemd-tmpfiles have mode \"0600\" or less permissive.","description":"Excessive permissions on local interactive user home directories may allow unauthorized access to user files by other users.","checkContent":"Verify RHEL 10 enforces that all local initialization files configured by systemd-tmpfiles have mode \"0600\" or less permissive.\n\nCheck that all files from \"/usr/share/rootfiles/\" are overridden correctly in RHEL 10:\n \n$ sudo grep /usr/share/rootfiles/ /etc/tmpfiles.d/*.conf\nC /root/.bash_logout   600 root root - /usr/share/rootfiles/.bash_logout\nC /root/.bash_profile  600 root root - /usr/share/rootfiles/.bash_profile\nC /root/.bashrc        600 root root - /usr/share/rootfiles/.bashrc\nC /root/.cshrc         600 root root - /usr/share/rootfiles/.cshrc\nC /root/.tcshrc        600 root root - /usr/share/rootfiles/.tcshrc\n \nIf any files are not configured to \"600\", or if no files are found by grep, this is a finding.","fixText":"Configure RHEL 10 to enforce that all local initialization files configured by systemd-tmpfiles have mode \"0600\" or less permissive.\n\nEnsure the following lines are in a \".conf\" file under \"/etc/tmpfiles.d/\":\n \nC /root/.bash_logout   600 root root - /usr/share/rootfiles/.bash_logout\nC /root/.bash_profile  600 root root - /usr/share/rootfiles/.bash_profile\nC /root/.bashrc        600 root root - /usr/share/rootfiles/.bashrc\nC /root/.cshrc         600 root root - /usr/share/rootfiles/.cshrc\nC /root/.tcshrc        600 root root - /usr/share/rootfiles/.tcshrc","ccis":["CCI-000213"]},{"vulnId":"V-281085","ruleId":"SV-281085r1195409_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"0600\" or less permissive for Secure Shell (SSH) private host key files.","description":"If an unauthorized user obtains the private SSH host key file, the host could be impersonated.","checkContent":"Verify RHEL 10 enforces mode \"0600\" for SSH private host key files with the following command:\n\n$ sudo stat -c \"%a %n\" /etc/ssh/*_key\n600 /etc/ssh/ssh_host_ecdsa_key\n600 /etc/ssh/ssh_host_ed25519_key\n600 /etc/ssh/ssh_host_rsa_key\n\nIf any private host key file has a mode more permissive than \"0600\", this is a finding.","fixText":"Configure RHEL 10 to enforce mode \"0600\" for SSH private host key files with the following command:\n\n$ sudo chmod 0600 /etc/ssh/ssh_host*key\n\nRestart the SSH daemon for the changes to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-000213"]},{"vulnId":"V-281086","ruleId":"SV-281086r1165613_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce \"root\" group ownership of the \"/boot/grub2/grub.cfg\" file.","description":"The \"root\" group is a highly privileged group. Furthermore, the group owner of this file should not have any access privileges anyway.","checkContent":"Verify RHEL 10 enforces group ownership of the \"/boot/grub2/grub.cfg\" file with the following command:\n\n$ sudo stat -c \"%G %n\" /boot/grub2/grub.cfg\nroot /boot/grub2/grub.cfg\n\nIf the \"/boot/grub2/grub.cfg\" file does not have a group owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 to enforce group ownership of the \"/boot/grub2/grub.cfg\" file.\n\nChange the group owner of the file \"/boot/grub2/grub.cfg\" to \"root\" by running the following command:\n\n$ sudo chgrp root /boot/grub2/grub.cfg","ccis":["CCI-000213"]},{"vulnId":"V-281087","ruleId":"SV-281087r1165616_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce \"root\" ownership of the \"/boot/grub2/grub.cfg\" file.","description":"The \" /boot/grub2/grub.cfg\" file stores sensitive system configuration. Protection of this file is critical for system security.","checkContent":"Verify RHEL 10 enforces ownership of the \"/boot/grub2/grub.cfg\" file with the following command:\n\n$ sudo stat -c \"%U %n\" /boot/grub2/grub.cfg\nroot /boot/grub2/grub.cfg\n\nIf the \"/boot/grub2/grub.cfg\" file does not have an owner of \"root\", this is a finding.","fixText":"Configure RHEL 10 to enforce ownership of the \"/boot/grub2/grub.cfg\" file.\n\nChange the owner of the \"/boot/grub2/grub.cfg\" file to \"root\" by running the following command:\n\n$ sudo chown root /boot/grub2/grub.cfg","ccis":["CCI-000213"]},{"vulnId":"V-281088","ruleId":"SV-281088r1165619_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent device files from being interpreted on file systems that contain user home directories.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify RHEL 10 is configured so that \"/home\" is mounted with the \"nodev\" option with the following command:\n\nNote: 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.\n\n$ mount | grep /home\n/dev/mapper/luks-ca2261ed-7b00-4b7b-84cd-8cd6d8fa4b28 on /home type xfs (rw,nodev,nosuid,noexec,seclabel)\n\nIf the \"/home\" file system is mounted without the \"nodev\" option, this is a finding.","fixText":"Configure RHEL 10 to prevent device files from being interpreted on file systems that contain user home directories.\n\nModify \"/etc/fstab\" to use the \"nodev\" option on the \"/home\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-281089","ruleId":"SV-281089r1165622_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent files with the \"setuid\" and \"setgid\" bit set from being executed on file systems that contain user home directories.","description":"The \"nosuid\" mount option causes the system to not execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify RHEL 10 is configured so that \"/home\" is mounted with the \"nosuid\" option with the following command:\n\nNote: 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.\n\n$ mount | grep /home\n/dev/mapper/luks-ca2261ed-7b00-4b7b-84cd-8cd6d8fa4b28 on /home type xfs (rw,nodev,nosuid,noexec,seclabel)\n\nIf the \"/home\" file system is mounted without the \"nosuid\" option, this is a finding.","fixText":"Configure RHEL 10 to prevent files with the \"setuid\" and \"setgid\" bit set from being executed on file systems that contain user home directories.\n\nModify \"/etc/fstab\" to use the \"nosuid\" option on the \"/home\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-281090","ruleId":"SV-281090r1165625_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent code from being executed on file systems that contain user home directories.","description":"The \"noexec\" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify RHEL 10 is configured so that \"/home\" is mounted with the \"noexec\" option with the following command:\n\nNote: 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.\n\n$ mount | grep /home\n/dev/mapper/luks-ca2261ed-7b00-4b7b-84cd-8cd6d8fa4b28 on /home type xfs (rw,nodev,nosuid,noexec,seclabel)\n\nIf the \"/home\" file system is mounted without the \"noexec\" option, this is a finding.","fixText":"Configure RHEL 10 to prevent code from being executed on file systems that contain user home directories.\n\nModify \"/etc/fstab\" to use the \"noexec\" option on the \"/home\" directory.","ccis":["CCI-000213"]},{"vulnId":"V-281091","ruleId":"SV-281091r1165628_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/var/log/audit\" with the \"nodev\" option.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify RHEL 10 is configured so that \"/var/log/audit\" is mounted with the \"nodev\" option:\n\n$ mount | grep /var/log/audit\n/dev/mapper/luks-4e45e1ad-5337-42c4-a19f-ee12ccc1d502 on /var/log/audit type xfs (rw,nodev,nosuid,noexec,seclabel)\n\nIf the \"/var/log/audit\" file system is mounted without the \"nodev\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/var/log/audit\" with the \"nodev\" option.\n\nModify \"/etc/fstab\" to use the \"nodev\" option on the \"/var/log/audit\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-281092","ruleId":"SV-281092r1165631_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/var/log/audit\" with the \"noexec\" option.","description":"The \"noexec\" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify RHEL 10 is configured so that \"/var/log/audit\" is mounted with the \"noexec\" option:\n\n$ mount | grep /var/log/audit\n/dev/mapper/luks-4e45e1ad-5337-42c4-a19f-ee12ccc1d502 on /var/log/audit type xfs (rw,nodev,nosuid,noexec,seclabel)\n\nIf the \"/var/log/audit\" file system is mounted without the \"noexec\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/var/log/audit\" with the \"noexec\" option.\n\nModify \"/etc/fstab\" to use the \"noexec\" option on the \"/var/log/audit\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-281093","ruleId":"SV-281093r1165634_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/var/log/audit\" with the \"nosuid\" option.","description":"The \"nosuid\" mount option causes the system to not execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify RHEL 10 is configured so that \"/var/log/audit\" is mounted with the \"nosuid\" option:\n\n$ mount | grep /var/log/audit\n/dev/mapper/luks-4e45e1ad-5337-42c4-a19f-ee12ccc1d502 on /var/log/audit type xfs (rw,nodev,nosuid,noexec,seclabel)\n\nIf the \"/var/log/audit\" file system is mounted without the \"nosuid\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/var/log/audit\" with the \"nosuid\" option.\n\nModify \"/etc/fstab\" to use the \"nosuid\" option on the \"/var/log/audit\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-281094","ruleId":"SV-281094r1165637_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce a mode of \"0755\" or less permissive for audit tools.","description":"Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information.\n\nRHEL 10 systems providing tools to interface with audit information will leverage user permissions and roles identifying the user accessing the tools, and the corresponding rights the user enjoys, to make access decisions regarding the access to audit tools.\n\nAudit tools include, but are not limited to, vendor-provided and open source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators.\n\nSatisfies: SRG-OS-000256-GPOS-00097, SRG-OS-000257-GPOS-00098, SRG-OS-000258-GPOS-00099","checkContent":"Verify RHEL 10 is configured so that the audit tools have a mode of \"0755\" or less with the following command:\n\n$ stat -c \"%a %n\" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/auditd /sbin/rsyslogd /sbin/augenrules\n755 /sbin/auditctl\n755 /sbin/aureport\n755 /sbin/ausearch\n755 /sbin/auditd\n755 /sbin/rsyslogd\n755 /sbin/augenrules\n\nIf any of the audit tool files have a mode more permissive than \"0755\", this is a finding.","fixText":"Configure RHEL 10 so that the audit tools to have a mode of \"0755\" by running the following command:\n\n$ sudo chmod 0755 [audit_tool]\n\nReplace \"[audit_tool]\" with each audit tool that has a mode more permissive than \"0755\".","ccis":["CCI-001493","CCI-001494","CCI-001495"]},{"vulnId":"V-281095","ruleId":"SV-281095r1184678_rule","severity":"medium","ruleTitle":"RHEL 10 must prohibit local initialization files from executing world-writable programs.","description":"If user startup files execute world-writable programs, especially in unprotected directories, they could be maliciously modified to destroy user files or otherwise compromise the system at the user level. If the system is compromised at the user level, it is easier to elevate privileges to eventually compromise the system at the root and network level.","checkContent":"Verify RHEL 10 local initialization files do not execute world-writable programs with the following command:\n\nNote: The example will be for a system that is configured to create user home directories in the \"/home\" directory.\n\n$ sudo find /home -perm -002 -type f -name \".[^.]*\" -exec ls -ld {} \\;\n\nIf any local initialization files are found to reference world-writable files, this is a finding.","fixText":"Configure RHEL 10 so that local initialization files do not execute world-writable programs with the following command:\n\n$ sudo chmod 0755 <file>","ccis":["CCI-000381"]},{"vulnId":"V-281096","ruleId":"SV-281096r1165643_rule","severity":"medium","ruleTitle":"RHEL 10 must enable the systemd-journald service.","description":"In the event of a system failure, RHEL 10 must preserve any information necessary to determine cause of failure and return to operations with least disruption to system processes.","checkContent":"Verify RHEL 10 enables the systemd-journald service with the following command:\n\n$ systemctl is-active systemd-journald\nactive\n\nIf the systemd-journald service is not active, this is a finding.","fixText":"Configure RHEL 10 to enable the systemd-journald service.\n\nTo enable the systemd-journald service, run the following command:\n\n$ sudo systemctl enable --now systemd-journald","ccis":["CCI-001665"]},{"vulnId":"V-281097","ruleId":"SV-281097r1165646_rule","severity":"medium","ruleTitle":"RHEL 10 must enable auditing of processes that start prior to the audit daemon.","description":"Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nIf auditing is enabled late in the startup process, the actions of some startup processes may not be audited. Some audit systems also maintain state information available only if auditing is enabled before a given process is created.","checkContent":"Verify RHEL 10 is configured so that GRUB 2 enables auditing of processes that start prior to the audit daemon with the following commands:\n\nCheck that the current GRUB 2 configuration enables auditing:\n\n$ sudo grubby --info=ALL | grep args | grep -v 'audit=1'\n\nIf any output is returned, this is a finding.\n\nCheck that auditing is enabled by default to persist in kernel updates:\n\n$ sudo grep audit /etc/default/grub\nGRUB_CMDLINE_LINUX=\"audit=1\"\n\nIf \"audit\" is not set to \"1\", is missing, or is commented out, this is a finding.","fixText":"Configure RHEL 10 to enable auditing of processes that start prior to the audit daemon with the following command:\n\n$ sudo grubby --update-kernel=ALL --args=\"audit=1\"\n\nAdd or modify the following line in \"/etc/default/grub\" to ensure the configuration survives kernel updates:\n\nGRUB_CMDLINE_LINUX=\"audit=1\"","ccis":["CCI-000213"]},{"vulnId":"V-281098","ruleId":"SV-281098r1165649_rule","severity":"medium","ruleTitle":"RHEL 10 must audit local events.","description":"Without establishing what type of events occurred, along with the source, location, and outcome, it would be difficult to establish, correlate, and investigate the events leading up to an outage or attack.\n\nIf option \"local_events\" is not set to \"yes\", only events from the network will be aggregated.","checkContent":"Verify that RHEL 10 generates audit records for local events with the following command:\n\n$ sudo grep local_events /etc/audit/auditd.conf\nlocal_events = yes\n\nIf \"local_events\" is not set to \"yes\", the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to generate audit records for local events by adding or updating the following line in \"/etc/audit/auditd.conf\":\n\nlocal_events = yes\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000169"]},{"vulnId":"V-281099","ruleId":"SV-281099r1165652_rule","severity":"medium","ruleTitle":"RHEL 10 must write audit records to disk.","description":"Audit data must be synchronously written to disk to ensure log integrity. This setting ensures that all audit event data is written to disk.","checkContent":"Verify the RHEL 10 audit system is configured to write logs to the disk with the following command:\n\n$ sudo grep write_logs /etc/audit/auditd.conf\nwrite_logs = yes\n\nIf \"write_logs\" does not have a value of \"yes\", the line is commented out, or the line is missing, this is a finding.","fixText":"Configure the RHEL 10 audit system to write log files to the disk.\n\nEdit the \"/etc/audit/auditd.conf\" file and add or update the \"write_logs\" option to \"yes\":\n\nwrite_logs = yes\n\nRestart the audit daemon with the following command for changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000163"]},{"vulnId":"V-281100","ruleId":"SV-281100r1165655_rule","severity":"medium","ruleTitle":"RHEL 10 must log username information when unsuccessful login attempts occur.","description":"Without auditing of these events, it may be harder or impossible to identify what an attacker did after an attack.","checkContent":"Verify RHEL 10 \"/etc/security/faillock.conf\" is configured to log username information when unsuccessful login attempts occur with the following command:\n\n$ sudo grep audit /etc/security/faillock.conf\naudit\n\nIf the \"audit\" option is not set, is missing, or is commented out, this is a finding.","fixText":"Configure RHEL 10 to log username information when unsuccessful login attempts occur.\n\nEnable the feature using the following command:\n\n$ sudo authselect enable-feature with-faillock\n\nAdd/modify the \"/etc/security/faillock.conf\" file to match the following line:\n\naudit","ccis":["CCI-000044"]},{"vulnId":"V-281101","ruleId":"SV-281101r1195411_rule","severity":"medium","ruleTitle":"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.","description":"Without the capability to restrict the roles and individuals that can select which events are audited, unauthorized personnel may be able to prevent the auditing of critical events. Misconfigured audits may degrade the system's performance by overwhelming the audit log. Misconfigured audits may also make it more difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.","checkContent":"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:\n\n$ sudo find /etc/audit/rules.d/ /etc/audit/audit.rules /etc/audit/auditd.conf -type f -exec stat -c \"%a %n\" {} \\;\n600 /etc/audit/rules.d/audit.rules\n640 /etc/audit/audit.rules\n640 /etc/audit/auditd.conf\n\nIf the audit configuration files have a mode more permissive than those shown, this is a finding.","fixText":"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:\n\n$ sudo chmod 0600 /etc/audit/rules.d/audit.rules\n$ sudo chmod 0640 /etc/audit/rules.d/[customrulesfile].rules\n$ sudo chmod 0640 /etc/audit/auditd.conf","ccis":["CCI-000171"]},{"vulnId":"V-281102","ruleId":"SV-281102r1195414_rule","severity":"medium","ruleTitle":"RHEL 10 must allocate an \"audit_backlog_limit\" of sufficient size to capture processes that start prior to the audit daemon.","description":"Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nIf auditing is enabled late in the startup process, the actions of some startup processes may not be audited. Some audit systems also maintain state information only available if auditing is enabled before a given process is created.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nAllocating an \"audit_backlog_limit\" of sufficient size is critical in maintaining a stable boot process. With an insufficient limit allocated, the system is susceptible to boot failures and crashes.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000254-GPOS-00095, SRG-OS-000341-GPOS-00132, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 allocates a sufficient \"audit_backlog_limit\" to capture processes that start prior to the audit daemon with the following command:\n\n$ grep -oP 'audit_backlog_limit=\\K[0-9]+' /proc/cmdline\n8192\n\nIf the command returns any outputs, and \"audit_backlog_limit\" is less than \"8192\", this is a finding.","fixText":"Configure RHEL 10 to allocate sufficient \"audit_backlog_limit\" to capture processes that start prior to the audit daemon with the following command:\n\n$ sudo grubby --update-kernel=ALL --args=audit_backlog_limit=8192\n\nThe setting will be applied on reboot.","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-001464","CCI-001849","CCI-002884","CCI-000172"]},{"vulnId":"V-281103","ruleId":"SV-281103r1166261_rule","severity":"medium","ruleTitle":"RHEL 10 must take appropriate action when a critical audit processing failure occurs.","description":"It is critical for the appropriate personnel to be aware if a system is at risk of failing to process audit logs as required. Without this notification, the security personnel may be unaware of an impending failure of the audit capability, and system operation may be adversely affected.\n\nAudit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded.","checkContent":"Verify the RHEL 10 audit service is configured to panic on a critical error with the following command:\n\n$ sudo grep \"\\-f\" /etc/audit/audit.rules\n-f 2\n\nIf the value for \"-f\" is not \"2\", and availability is not documented as an overriding concern, this is a finding.","fixText":"Configure RHEL 10 to shut down when auditing failures occur.\n\nAdd the following line to the bottom of the \"/etc/audit/rules.d/audit.rules\" file:\n\n-f 2","ccis":["CCI-000139"]},{"vulnId":"V-281104","ruleId":"SV-281104r1166264_rule","severity":"medium","ruleTitle":"RHEL 10 must take action when allocated audit record storage volume reaches 75 percent of the audit record storage capacity.","description":"If action is not taken when storage volume reaches 75 percent utilization, the auditing system may fail when the storage volume reaches capacity.","checkContent":"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:\n\n$ sudo grep -w space_left /etc/audit/auditd.conf\nspace_left = 25%\n\nIf the value of the \"admin_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. \n\nIf the \"space_left\" value is not configured to the correct value, this is a finding.","fixText":"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:\n\nspace_left  = 25%\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-001855"]},{"vulnId":"V-281105","ruleId":"SV-281105r1166267_rule","severity":"medium","ruleTitle":"RHEL 10 must label all off-loaded audit logs before sending them to the central log server.","description":"Enriched logging is needed to determine who, what, and when events occur on a system. Without this, determining root cause of an event will be much more difficult.\n\nWhen audit logs are not labeled before they are sent to a central log server, the audit data will not be able to be analyzed and tied back to the correct system.\n\nSatisfies: SRG-OS-000039-GPOS-00017, SRG-OS-000342-GPOS-00133, SRG-OS-000479-GPOS-00224","checkContent":"Verify the RHEL 10 audit daemon is configured to label all off-loaded audit logs with the following command:\n\n$ sudo grep name_format /etc/audit/auditd.conf\nname_format = hostname\n\nIf the \"name_format\" option is not \"hostname\", \"fqd\", or \"numeric\", or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 so that all off-loaded audit logs are labeled before sending them to the central log server.\n\nEdit the \"/etc/audit/auditd.conf\" file and add or update the \"name_format\" option:\n\nname_format = hostname\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000132","CCI-001851"]},{"vulnId":"V-281106","ruleId":"SV-281106r1166270_rule","severity":"low","ruleTitle":"RHEL 10 must allocate audit record storage capacity to store at least one week's worth of audit records.","description":"To ensure RHEL 10 systems have a sufficient storage capacity in which to write the audit logs, RHEL 10 must be able to allocate audit record storage capacity.\n\nThe task of allocating audit record storage capacity is usually performed during initial installation of RHEL 10.\n\nSatisfies: SRG-OS-000341-GPOS-00132, SRG-OS-000342-GPOS-00133","checkContent":"Verify RHEL 10 allocates audit record storage capacity to store at least one week of audit records when audit records are not immediately sent to a central audit record storage facility.\n\nNote: The partition size needed to capture a week of audit records is based on the activity level of the system and the total storage capacity available. Typically 10GB of storage space for audit records should be sufficient.\n\nDetermine which partition the audit records are being written to with the following command:\n\n$ sudo grep -w log_file /etc/audit/auditd.conf\nlog_file = /var/log/audit/audit.log\n\nCheck the size of the partition that audit records are written to with the following command and verify whether it is sufficiently large:\n\n$ df -h /var/log/audit/\nFilesystem                                             Size  Used Avail Use% Mounted on\n/dev/mapper/luks-4e45e1ad-5337-42c4-a19f-ee12ccc1d502   10G  263M  9.7G   3% /var/log/audit\n\nIf the audit record partition is not allocated for sufficient storage capacity, this is a finding.","fixText":"Configure RHEL 10 to allocate enough storage capacity for at least one week of audit records when audit records are not immediately sent to a central audit record storage facility.\n\nIf audit records are stored on a partition made specifically for audit records, resize the partition with sufficient space to contain one week of audit records.\n\nIf audit records are not stored on a partition made specifically for audit records, a new partition with sufficient space must be created.","ccis":["CCI-001849","CCI-001851"]},{"vulnId":"V-281107","ruleId":"SV-281107r1166273_rule","severity":"medium","ruleTitle":"RHEL 10 must take action when allocated audit record storage volume reaches 95 percent of the audit record storage capacity.","description":"If action is not taken when storage volume reaches 95 percent utilization, the auditing system may fail when the storage volume reaches capacity.","checkContent":"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:\n\n$ sudo grep -w admin_space_left /etc/audit/auditd.conf\nadmin_space_left = 5%\n\nIf 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. \n\nIf the \"space_left\" value is not configured to the correct value, this is a finding.","fixText":"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:\n\nadmin_space_left = 5%\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-001855"]},{"vulnId":"V-281108","ruleId":"SV-281108r1166276_rule","severity":"medium","ruleTitle":"RHEL 10 must take action when allocated audit record storage volume reaches 95 percent of the repository maximum audit record storage capacity.","description":"If action is not taken when storage volume reaches 95 percent utilization, the auditing system may fail when the storage volume reaches capacity.","checkContent":"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:\n\n$ sudo grep admin_space_left_action /etc/audit/auditd.conf\nadmin_space_left_action = single\n\nIf 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).\n\nIf there is no evidence that real-time alerts are configured on the system, this is a finding.","fixText":"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.\n\nEdit 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:\n\nadmin_space_left_action = single\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-001855"]},{"vulnId":"V-281109","ruleId":"SV-281109r1184691_rule","severity":"medium","ruleTitle":"RHEL 10 must take appropriate action when the internal event queue is full.","description":"The audit system must have an action set up in case the internal event queue becomes full so that no data is lost. Information stored in one location is vulnerable to accidental or incidental deletion or alteration.\n\nOff-loading is a common process in information systems with limited audit storage capacity.\n\nSatisfies: SRG-OS-000342-GPOS-00133, SRG-OS-000479-GPOS-00224","checkContent":"Verify the RHEL 10 audit system is configured to take an appropriate action when the internal event queue is full:\n\n$ sudo grep overflow_action /etc/audit/auditd.conf\noverflow_action = syslog\n\nIf 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.\n\nIf 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.","fixText":"Configure RHEL 10 to take appropriate action when the internal event queue is full.\n\nEdit the \"/etc/audit/auditd.conf\" file and add or update the \"overflow_action\" option:\n\noverflow_action = syslog\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-001851"]},{"vulnId":"V-281110","ruleId":"SV-281110r1166282_rule","severity":"medium","ruleTitle":"RHEL 10 must produce audit records containing information to establish the identity of any individual or process associated with the event.","description":"Without establishing what type of events occurred, along with the source, location, and outcome, it would be difficult to establish, correlate, and investigate the events leading up to an outage or attack.\n\nAudit record content that may be necessary to satisfy this requirement includes, for example, time stamps, source and destination addresses, user/process identifiers, event descriptions, success/fail indications, filenames involved, and access control or flow control rules invoked.\n\nEnriched logging aids in making sense of who, what, and when events occur on a system. Without this, determining root cause of an event will be much more difficult.","checkContent":"Verify the RHEL 10 audit system is configured to resolve audit information before writing to disk with the following command:\n\n$ sudo grep log_format /etc/audit/auditd.conf\nlog_format = ENRICHED\n\nIf the \"log_format\" option is not \"ENRICHED\", or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 audit system to resolve audit information before writing to disk.\n\nEdit the \"/etc/audit/auditd.conf\" file and add or update the \"log_format\" option:\n\nlog_format = ENRICHED\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-001487"]},{"vulnId":"V-281111","ruleId":"SV-281111r1166285_rule","severity":"medium","ruleTitle":"RHEL 10 must periodically flush audit records to disk to ensure that audit records are not lost.","description":"If option \"freq\" is not set to a value that requires audit records to be written to disk after a threshold number is reached, audit records may be lost.","checkContent":"Verify RHEL 10 is configured to flush audit records to disk after every 100 records with the following command:\n\n$ sudo grep freq /etc/audit/auditd.conf\nfreq = 100\n\nIf \"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.","fixText":"Configure RHEL 10 to flush audit records to disk by adding or updating the following rule in \"/etc/audit/rules.d/audit.rules\":\n\nfreq = 100\n\nRestart the audit daemon with the following command for changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000154"]},{"vulnId":"V-281113","ruleId":"SV-281113r1184746_rule","severity":"medium","ruleTitle":"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.","description":"If security personnel are not notified immediately when storage volume reaches 75 percent utilization, they are unable to plan for audit record storage capacity expansion.","checkContent":"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:\n\n$ sudo grep -w space_left_action /etc/audit/auditd.conf\nspace_left_action = email\n\nIf 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.\n\nIf there is no evidence that real-time alerts are configured on the system, this is a finding.","fixText":"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.\n\nspace_left_action = email\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-001855"]},{"vulnId":"V-281114","ruleId":"SV-281114r1166294_rule","severity":"medium","ruleTitle":"RHEL 10 must notify the system administrator (SA) and/or information system security officer (ISSO) (at a minimum) of an audit processing failure.","description":"It is critical for the appropriate personnel to be aware if a system is at risk of failing to process audit logs as required. Without this notification, the security personnel may be unaware of an impending failure of the audit capability, and system operation may be adversely affected.\n\nAudit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded.\n\nThis requirement applies to each audit data storage repository (i.e., distinct information system component where audit records are stored), the centralized audit storage capacity of organizations (i.e., all audit data storage repositories combined), or both.\n\nSatisfies: SRG-OS-000046-GPOS-00022, SRG-OS-000343-GPOS-00134","checkContent":"Verify RHEL 10 is configured to notify the SA and/or ISSO (at a minimum) of an audit processing failure with the following command:\n\n$ sudo grep action_mail_acct /etc/audit/auditd.conf\naction_mail_acct = root\n\nIf 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. \n\nIf there is no evidence of the proper personnel being notified of an audit processing failure, this is a finding.","fixText":"Configure RHEL 10 to notify the SA and/or ISSO (at a minimum) of an audit processing failure.\n\nEdit the following line in \"/etc/audit/auditd.conf\" to ensure administrators are notified via email for those situations:\n\naction_mail_acct = root\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000139","CCI-001855"]},{"vulnId":"V-281115","ruleId":"SV-281115r1184650_rule","severity":"medium","ruleTitle":"RHEL 10 must log Secure Shell (SSH) connection attempts and failures to the server.","description":"SSH provides several logging levels with varying amounts of verbosity. \"DEBUG\" is specifically not recommended other than strictly for debugging SSH communications because it provides so much data that it is difficult to identify important security information. \"INFO\" or \"VERBOSE\" level is the basic level that only records login activity of SSH users. In many situations, such as incident response, it is important to determine when a particular user was active on a system. The logout record can eliminate users who disconnected, which helps narrow the field.","checkContent":"Verify RHEL 10 logs SSH connection attempts and failures to the server with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*loglevel'\n/etc/ssh/sshd_config.d/90-sshd.conf:LogLevel VERBOSE\n\nIf a value of \"VERBOSE\" is not returned, or the line is commented out or missing, this is a finding.","fixText":"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\":\n\nLogLevel VERBOSE\n\nRestart the SSH daemon with the following command for the settings to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-000067"]},{"vulnId":"V-281116","ruleId":"SV-281116r1166300_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"execve\" system call.","description":"Misuse of privileged functions, either intentionally or unintentionally by authorized users, or by unauthorized external entities that have compromised information system accounts, is a serious and ongoing concern and can have significant adverse impacts on organizations. \n\nAuditing the use of privileged functions is one way to detect such misuse and identify the risk from insider threats and the advanced persistent threat.\n\nSatisfies: SRG-OS-000326-GPOS-00126, SRG-OS-000327-GPOS-00127, SRG-OS-000755-GPOS-00220","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"execve\" system call with the following command:\n\n$ sudo auditctl -l | grep execve\n-a always,exit -F arch=b32 -S execve -C uid!=euid -F euid=0 -F key=execpriv\n-a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -F key=execpriv\n-a always,exit -F arch=b32 -S execve -C gid!=egid -F egid=0 -F key=execpriv\n-a always,exit -F arch=b64 -S execve -C gid!=egid -F egid=0 -F key=execpriv\n\nIf the command does not return all lines, or the lines are commented out, this is a finding.","fixText":"Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the \"execve\" system call.\n\nAdd or update the following file system rules to \"/etc/audit/rules.d/audit.rules\":\n\n-a always,exit -F arch=b32 -S execve -C uid!=euid -F euid=0 -k execpriv\n-a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -k execpriv\n-a always,exit -F arch=b32 -S execve -C gid!=egid -F egid=0 -k execpriv\n-a always,exit -F arch=b64 -S execve -C gid!=egid -F egid=0 -k execpriv\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-002233","CCI-002234","CCI-004188"]},{"vulnId":"V-281117","ruleId":"SV-281117r1184680_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"setxattr\", \"fsetxattr\", \"lsetxattr\", \"removexattr\", \"fremovexattr\", and \"lremovexattr\" system calls.","description":"Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account that is being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each syscall made by all programs on the system. Therefore, it is very important to use syscall rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining syscalls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000458-GPOS-00203, SRG-OS-000462-GPOS-00206, SRG-OS-000463-GPOS-00207, SRG-OS-000471-GPOS-00215, SRG-OS-000474-GPOS-00219, SRG-OS-000466-GPOS-00210, SRG-OS-000468-GPOS-00212, SRG-OS-000064-GPOS-00033","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"setxattr\", \"fsetxattr\", \"lsetxattr\", \"removexattr\", \"fremovexattr\", and \"lremovexattr\" system calls with the following command:\n\n$ sudo auditctl -l | grep xattr\n-a always,exit -F arch=b32 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid>=1000 -F auid!=unset -k perm_mod\n-a always,exit -F arch=b64 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid>=1000 -F auid!=unset -k perm_mod\n\n-a always,exit -F arch=b32 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid=0 -k perm_mod\n-a always,exit -F arch=b64 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid=0 -k perm_mod\n\nIf 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.","fixText":"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\":\n\n-a always,exit -F arch=b32 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid>=1000 -F auid!=unset -k perm_mod\n-a always,exit -F arch=b64 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid>=1000 -F auid!=unset -k perm_mod\n\n-a always,exit -F arch=b32 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid=0 -k perm_mod\n-a always,exit -F arch=b64 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid=0 -k perm_mod\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281118","ruleId":"SV-281118r1166306_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of \"umount\" system calls.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"umount\" command with the following command:\n\n$ sudo auditctl -l | grep /usr/bin/umount\n-a always,exit -S all -F path=/usr/bin/umount -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-mount\n\nIf the command does not return an audit rule for \"umount\", or any of the lines returned are commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/bin/umount -F perm=x -F auid>=1000 -F auid!=unset -k privileged-mount\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281119","ruleId":"SV-281119r1166309_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"chacl\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"chacl\" command with the following command:\n\n$ sudo auditctl -l | grep chacl\n-a always,exit -S all -F path=/usr/bin/chacl -F perm=x -F auid>=1000 -F auid!=-1 -F key=perm_mod\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/bin/chacl -F perm=x -F auid>=1000 -F auid!=unset -k perm_mod\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281120","ruleId":"SV-281120r1166312_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"setfacl\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"setfacl\" command with the following command:\n\n$ sudo auditctl -l | grep setfacl\n-a always,exit -S all -F path=/usr/bin/setfacl -F perm=x -F auid>=1000 -F auid!=-1 -F key=perm_mod\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/bin/setfacl -F perm=x -F auid>=1000 -F auid!=unset -k perm_mod\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281121","ruleId":"SV-281121r1166315_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"chcon\" command.","description":"Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account that is being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215, SRG-OS-000463-GPOS-00207, SRG-OS-000465-GPOS-00209","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"chcon\" command with the following command:\n\n$ sudo auditctl -l | grep chcon\n-a always,exit -S all -F path=/usr/bin/chcon -F perm=x -F auid>=1000 -F auid!=-1 -F key=perm_mod\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/bin/chcon -F perm=x -F auid>=1000 -F auid!=unset -k perm_mod\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281122","ruleId":"SV-281122r1166318_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"semanage\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000463-GPOS-00207, SRG-OS-000465-GPOS-00209","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"semanage\" command with the following command:\n\n$ sudo auditctl -l | grep semanage\n-a always,exit -S all -F path=/usr/sbin/semanage -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-unix-update\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/sbin/semanage -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281123","ruleId":"SV-281123r1166321_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"setfiles\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000463-GPOS-00207, SRG-OS-000465-GPOS-00209","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"setfiles\" command with the following command:\n\n$ sudo auditctl -l | grep setfiles\n-a always,exit -S all -F path=/usr/sbin/setfiles -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-unix-update\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/sbin/setfiles -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281124","ruleId":"SV-281124r1166324_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"setsebool\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000463-GPOS-00207, SRG-OS-000465-GPOS-00209","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"setsebool\" command with the following command:\n\n$ sudo auditctl -l | grep setsebool\n-a always,exit -S all -F path=/usr/sbin/setsebool -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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:\n\n-a always,exit -F path=/usr/sbin/setsebool -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281125","ruleId":"SV-281125r1197225_rule","severity":"medium","ruleTitle":"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.","description":"Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account that is being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each syscall made by all programs on the system. Therefore, it is very important to use syscall rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining syscalls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000458-GPOS-00203, SRG-OS-000461-GPOS-00205","checkContent":"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:\n\n$ sudo auditctl -l | grep 'open\\|truncate\\|creat'\n-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\n-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\n\n-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\n-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\n\nIf the output does not produce rules containing \"-F exit=-EPERM\", this is a finding.\n\nIf the output does not produce rules containing \"-F exit=-EACCES\", this is a finding.\n\nIf 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.","fixText":"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:\n\n-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\n-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\n\n-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\n-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\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281126","ruleId":"SV-281126r1166330_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"delete_module\" system call.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000471-GPOS-00216, SRG-OS-000477-GPOS-00222","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"delete_module\" system call with the following command:\n\n$ sudo auditctl -l | grep delete_module\n-a always,exit -F arch=b32 -S delete_module -F auid>=1000 -F auid!=-1 -F key=module_chng\n-a always,exit -F arch=b64 -S delete_module -F auid>=1000 -F auid!=-1 -F key=module_chng\n\nIf 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.","fixText":"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:\n\n-a always,exit -F arch=b32 -S delete_module -F auid>=1000 -F auid!=unset -k module_chng\n-a always,exit -F arch=b64 -S delete_module -F auid>=1000 -F auid!=unset -k module_chng\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281127","ruleId":"SV-281127r1166333_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"init_module\" and \"finit_module\" system calls.","description":"Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account that is being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each syscall made by all programs on the system. Therefore, it is very important to use syscall rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining syscalls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000471-GPOS-00216, SRG-OS-000477-GPOS-00222","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"init_module\" and \"finit_module\" syscalls with the following command:\n\n$ sudo auditctl -l | grep init_module\n-a always,exit -F arch=b32 -S init_module,finit_module -F auid>=1000 -F auid!=unset -k module_chng\n-a always,exit -F arch=b64 -S init_module,finit_module -F auid>=1000 -F auid!=unset -k module_chng\n\nIf both the \"b32\" and \"b64\" audit rules are not defined for the \"delete_module\" syscall, or any of the lines returned are commented out, this is a finding.","fixText":"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:\n\n-a always,exit -F arch=b32 -S init_module,finit_module -F auid>=1000 -F auid!=unset -k module_chng\n-a always,exit -F arch=b64 -S init_module,finit_module -F auid>=1000 -F auid!=unset -k module_chng\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281128","ruleId":"SV-281128r1166336_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"chage\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"chage\" command with the following command:\n\n$ sudo auditctl -l | grep chage\n-a always,exit -S all -F path=/usr/bin/chage -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-chage\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/bin/chage -F perm=x -F auid>=1000 -F auid!=unset -k privileged-chage\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281129","ruleId":"SV-281129r1166339_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"chsh\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"chsh\" command with the following command:\n\n$ sudo auditctl -l | grep chsh\n-a always,exit -S all -F path=/usr/bin/chsh -F perm=x -F auid>=1000 -F auid!=-1 -F key=priv_cmd\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/bin/chsh -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281130","ruleId":"SV-281130r1166342_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"crontab\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"crontab\" command with the following command:\n\n$ sudo auditctl -l | grep crontab\n-a always,exit -S all -F path=/usr/bin/crontab -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-crontab\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/bin/crontab -F perm=x -F auid>=1000 -F auid!=unset -k privileged-crontab\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281131","ruleId":"SV-281131r1166345_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"gpasswd\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"gpasswd\" command with the following command:\n\n$ sudo auditctl -l | grep gpasswd\n-a always,exit -S all -F path=/usr/bin/gpasswd -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-gpasswd\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the \"gpasswd\" command by adding or updating the following rule in \"/etc/audit/rules.d/audit.rules\":\n\n-a always,exit -F path=/usr/bin/gpasswd -F perm=x -F auid>=1000 -F auid!=unset -k privileged-gpasswd\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281132","ruleId":"SV-281132r1166348_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"kmod\" command.","description":"Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000471-GPOS-00216, SRG-OS-000477-GPOS-00222","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"kmod\" command with the following command:\n\n$ sudo auditctl -l | grep kmod\n-a always,exit -S all -F path=/usr/bin/kmod -F perm=x -F auid>=1000 -F auid!=-1 -F key=modules\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/bin/kmod -F perm=x -F auid>=1000 -F auid!=unset -k modules\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281133","ruleId":"SV-281133r1166351_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"newgrp\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account that is being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"newgrp\" command with the following command:\n\n$ sudo auditctl -l | grep newgrp\n-a always,exit -S all -F path=/usr/bin/newgrp -F perm=x -F auid>=1000 -F auid!=-1 -F key=priv_cmd\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/bin/newgrp -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281134","ruleId":"SV-281134r1166354_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"pam_timestamp_check\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"pam_timestamp_check\" command with the following command:\n\n$ sudo auditctl -l | grep timestamp\n-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\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/sbin/pam_timestamp_check -F perm=x -F auid>=1000 -F auid!=unset -k privileged-pam_timestamp_check\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281135","ruleId":"SV-281135r1184693_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"passwd\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/passwd\" with the following command:\n\n$ sudo auditctl -l | egrep '(/usr/bin/passwd)'\n-a always,exit -S all -F path=/usr/bin/passwd -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-passwd\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the \"passwd\" command by adding or updating the following rule in \"/etc/audit/rules.d/audit.rules\":\n\n-a always,exit -F path=/usr/bin/passwd -F perm=x -F auid>=1000 -F auid!=unset -k privileged-passwd\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281136","ruleId":"SV-281136r1166360_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"postdrop\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"postdrop\" command with the following command:\n\n$ sudo auditctl -l | grep postdrop\n-a always,exit -S all -F path=/usr/sbin/postdrop -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-unix-update\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/sbin/postdrop -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281137","ruleId":"SV-281137r1197226_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"postqueue\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"postqueue\" command with the following command:\n\n$ sudo auditctl -l | grep postqueue\n-a always,exit -S all -F path=/usr/sbin/postqueue -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-unix-update\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/sbin/postqueue -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281138","ruleId":"SV-281138r1197227_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the ssh-agent command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"ssh-agent\" command with the following command:\n\n$ sudo auditctl -l | grep ssh-agent\n-a always,exit -S all -F path=/usr/bin/ssh-agent -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-ssh\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/bin/ssh-agent -F perm=x -F auid>=1000 -F auid!=unset -k privileged-ssh\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281139","ruleId":"SV-281139r1197228_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"ssh-keysign\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"ssh-keysign\" command with the following command:\n\n$ sudo auditctl -l | grep ssh-keysign\n-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\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/libexec/openssh/ssh-keysign -F perm=x -F auid>=1000 -F auid!=unset -k privileged-ssh\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281140","ruleId":"SV-281140r1197229_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"su\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000064-GPOS-00033, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210, SRG-OS-000755-GPOS-00220","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"su\" command with the following command:\n\n$ sudo auditctl -l | grep '/usr/bin/su\\b'\n-a always,exit -S all -F path=/usr/bin/su -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-priv_change\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/bin/su -F perm=x -F auid>=1000 -F auid!=unset -k privileged-priv_change\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-000172","CCI-002884","CCI-004188"]},{"vulnId":"V-281141","ruleId":"SV-281141r1197230_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"sudo\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210, SRG-OS-000755-GPOS-00220","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"sudo\" command with the following command:\n\n$ sudo auditctl -l | grep '/usr/bin/sudo\\b'\n-a always,exit -S all -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -F auid!=-1 -F key=priv_cmd\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172","CCI-004188"]},{"vulnId":"V-281142","ruleId":"SV-281142r1197231_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"sudoedit\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000755-GPOS-00220","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"sudoedit\" command with the following command:\n\n$ sudo auditctl -l | grep /usr/bin/sudoedit\n-a always,exit -S all -F path=/usr/bin/sudoedit -F perm=x -F auid>=1000 -F auid!=-1 -F key=priv_cmd\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/bin/sudoedit -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172","CCI-004188"]},{"vulnId":"V-281143","ruleId":"SV-281143r1197232_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"unix_chkpwd\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"unix_chkpwd\" command with the following command:\n\n$ sudo auditctl -l | grep unix_chkpwd\n-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\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281144","ruleId":"SV-281144r1166384_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"unix_update\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000064-GPOS-00033, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"unix_update\" command with the following command:\n\n$ sudo auditctl -l | grep unix_update\n-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\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/sbin/unix_update -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-000172","CCI-002884"]},{"vulnId":"V-281145","ruleId":"SV-281145r1197233_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"userhelper\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"userhelper\" command with the following command:\n\n$ sudo auditctl -l | grep userhelper\n-a always,exit -S all -F path=/usr/sbin/userhelper -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-unix-update\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/sbin/userhelper -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281146","ruleId":"SV-281146r1197235_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"usermod\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"usermod\" command with the following command:\n\n$ sudo auditctl -l | grep usermod\n-a always,exit -S all -F path=/usr/sbin/usermod -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-usermod\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F path=/usr/sbin/usermod -F perm=x -F auid>=1000 -F auid!=unset -k privileged-usermod\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281147","ruleId":"SV-281147r1166393_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"mount\" command.","description":"Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account that is being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each syscall made by all programs on the system. Therefore, it is very important to use syscall rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining syscalls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"mount\" command with the following command:\n\n$ sudo auditctl -l | grep mount\n-a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=unset -k export\n-a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=unset -k export\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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\":\n\n-a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=unset -k export\n-a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=unset -k export\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281148","ruleId":"SV-281148r1166396_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"init\" command.","description":"Misuse of the \"init\" command may cause availability issues for the system.","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"init\" command with the following command:\n\n$ sudo auditctl -l | grep /usr/sbin/init\n-a always,exit -S all -F path=/usr/sbin/init -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-init\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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:\n\n-a always,exit -F path=/usr/sbin/init -F perm=x -F auid>=1000 -F auid!=unset -k privileged-init\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000172"]},{"vulnId":"V-281149","ruleId":"SV-281149r1166399_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"poweroff\" command.","description":"Misuse of the \"poweroff\" command may cause availability issues for the system.","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"poweroff\" command with the following command:\n\n$ sudo auditctl -l | grep poweroff\n-a always,exit -S all -F path=/usr/sbin/poweroff -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-poweroff\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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:\n\n-a always,exit -F path=/usr/sbin/poweroff -F perm=x -F auid>=1000 -F auid!=unset -k privileged-poweroff\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000172"]},{"vulnId":"V-281150","ruleId":"SV-281150r1166402_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"reboot\" command.","description":"Misuse of the \"reboot\" command may cause system availability issues.","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"reboot\" command with the following command:\n\n$ sudo auditctl -l | grep reboot\n-a always,exit -S all -F path=/usr/sbin/reboot -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-reboot\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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:\n\n-a always,exit -F path=/usr/sbin/reboot -F perm=x -F auid>=1000 -F auid!=unset -k privileged-reboot\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000172"]},{"vulnId":"V-281151","ruleId":"SV-281151r1166405_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the shutdown command.","description":"Misuse of the shutdown command may cause availability issues for the system.","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"shutdown\" command with the following command:\n\n$ sudo cat /etc/audit/rules.d/* | grep shutdown\n-a always,exit -S all -F path=/usr/sbin/shutdown -F perm=x -F auid>=1000 -F auid!=-1 -F key=privileged-shutdown\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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:\n\n-a always,exit -F path=/usr/sbin/shutdown -F perm=x -F auid>=1000 -F auid!=unset -k privileged-shutdown\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000172"]},{"vulnId":"V-281152","ruleId":"SV-281152r1166408_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"umount\" system call.","description":"The changing of file permissions could indicate that a user is attempting to gain access to information that would otherwise be disallowed. Auditing discretionary access control (DAC) modifications can facilitate the identification of patterns of abuse among both authorized and unauthorized users.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 generates an audit record for all uses of the \"umount\" system call with the following command:\n\n$ sudo auditctl -l | grep b32 | grep 'umount\\b'\n-a always,exit -F arch=b32 -S umount -F auid>=1000 -F auid!=-1 -F key=privileged-umount\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"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:\n\n-a always,exit -F arch=b32 -S umount -F auid>=1000 -F auid!=unset -k privileged-umount\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281153","ruleId":"SV-281153r1166411_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for successful and unsuccessful uses of the \"umount2\" system call.","description":"The changing of file permissions could indicate that a user is attempting to gain access to information that would otherwise be disallowed. Auditing discretionary access control (DAC) modifications can facilitate the identification of patterns of abuse among both authorized and unauthorized users.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify RHEL 10 generates an audit record for all uses of the \"umount2\" system call with the following command:\n\n$ sudo auditctl -l | grep umount2\n-a always,exit -F arch=b64 -S umount2 -F auid>=1000 -F auid!=-1 -F key=privileged-umount\n-a always,exit -F arch=b32 -S umount2 -F auid>=1000 -F auid!=-1 -F key=privileged-umount\n\nIf no line is returned, this is a finding.","fixText":"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\":\n\n-a always,exit -F arch=b32 -S umount2 -F auid>=1000 -F auid!=unset -k privileged-umount\n-a always,exit -F arch=b64 -S umount2 -F auid>=1000 -F auid!=unset -k privileged-umount\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281154","ruleId":"SV-281154r1166414_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/sudoers\".","description":"The actions taken by system administrators must be audited to keep a record of what was executed on the system, as well as for accountability purposes. Editing the \"sudoers\" file may be sign of an attacker trying to establish persistent methods to a system. Auditing the editing of the \"sudoers\" files mitigates this risk.\n\nSatisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000304-GPOS-00121, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000470-GPOS-00214, SRG-OS-000471-GPOS-00215, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221","checkContent":"Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/sudoers\" with the following command:\n\n$ sudo auditctl -l | grep '/etc/sudoers[^.]'\n-a always,exit -F arch=b32 -F path=/etc/sudoers -F perm=wa -F key=logins\n-a always,exit -F arch=b64 -F path=/etc/sudoers -F perm=wa -F key=logins\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/sudoers\".\n\nAdd or update the following file system rule to \"/etc/audit/rules.d/audit.rules\":\n\n-a always,exit -F arch=b32 -F path=/etc/sudoers -F perm=wa -F key=logins\n-a always,exit -F arch=b64 -F path=/etc/sudoers -F perm=wa -F key=logins\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000018","CCI-000130","CCI-000135","CCI-000169","CCI-000015","CCI-002884","CCI-000172","CCI-001403","CCI-001404","CCI-001405","CCI-002130"]},{"vulnId":"V-281155","ruleId":"SV-281155r1197236_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect the \"/etc/sudoers.d/\" directory.","description":"The actions taken by system administrators must be audited to keep a record of what was executed on the system, as well as for accountability purposes. Editing the \"sudoers\" file may be a sign of an attacker trying to establish persistent methods to a system. Auditing the editing of the \"sudoers\" files mitigates this risk.\n\nSatisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000304-GPOS-00121, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000470-GPOS-00214, SRG-OS-000471-GPOS-00215, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221","checkContent":"Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/sudoers.d/\" with the following command:\n\n$ sudo auditctl -l | grep /etc/sudoers.d\n-a always,exit -F arch=b32 -F path=/etc/sudoers.d/ -F perm=wa -F key=identity\n-a always,exit -F arch=b64 -F path=/etc/sudoers.d/ -F perm=wa -F key=identity\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/sudoers.d/\".\n\nAdd or update the following file system rule to \"/etc/audit/rules.d/audit.rules\":\n\n-a always,exit -F arch=b32 -F path=/etc/sudoers.d/ -F perm=wa -F key=identity\n-a always,exit -F arch=b64 -F path=/etc/sudoers.d/ -F perm=wa -F key=identity\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000018","CCI-000130","CCI-000135","CCI-000169","CCI-000015","CCI-002884","CCI-000172","CCI-001403","CCI-001404","CCI-001405","CCI-002130"]},{"vulnId":"V-281156","ruleId":"SV-281156r1166420_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/group\".","description":"In addition to auditing new user and group accounts, these watches will alert the system administrator(s) to any modifications. Any unexpected users, groups, or modifications must be investigated for legitimacy.\n\nSatisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000304-GPOS-00121, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000470-GPOS-00214, SRG-OS-000471-GPOS-00215, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221","checkContent":"Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/group\" with the following command:\n\n$ sudo auditctl -l | egrep '(/etc/group)'\n-a always,exit -F arch=b32 -F path=/etc/group -F perm=wa -F key=identity\n-a always,exit -F arch=b64 -F path=/etc/group -F perm=wa -F key=identity\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/group\".\n\nAdd or update the following file system rule to \"/etc/audit/rules.d/audit.rules\":\n\n-a always,exit -F arch=b32 -F path=/etc/group -F perm=wa -F key=identity\n-a always,exit -F arch=b64 -F path=/etc/group -F perm=wa -F key=identity\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000018","CCI-000130","CCI-000135","CCI-000169","CCI-000015","CCI-002884","CCI-000172","CCI-001403","CCI-001404","CCI-001405","CCI-002130"]},{"vulnId":"V-281157","ruleId":"SV-281157r1166423_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/gshadow\".","description":"In addition to auditing new user and group accounts, these watches will alert the system administrator(s) to any modifications. Any unexpected users, groups, or modifications should be investigated for legitimacy.\n\nSatisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000304-GPOS-00121, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000470-GPOS-00214, SRG-OS-000471-GPOS-00215, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221","checkContent":"Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/gshadow\" with the following command:\n\n$ sudo auditctl -l | egrep '(/etc/gshadow)'\n-a always,exit -F arch=b32 -F path=/etc/gshadow -F perm=wa -F key=identity\n-a always,exit -F arch=b64 -F path=/etc/gshadow -F perm=wa -F key=identity\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/gshadow\".\n\nAdd or update the following file system rule to \"/etc/audit/rules.d/audit.rules\":\n\n-a always,exit -F arch=b32 -F path=/etc/gshadow -F perm=wa -F key=identity\n-a always,exit -F arch=b64 -F path=/etc/gshadow -F perm=wa -F key=identity\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000018","CCI-000130","CCI-000135","CCI-000169","CCI-000015","CCI-002884","CCI-000172","CCI-001403","CCI-001404","CCI-001405","CCI-002130"]},{"vulnId":"V-281158","ruleId":"SV-281158r1166426_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/opasswd\".","description":"In addition to auditing new user and group accounts, these watches will alert the system administrator(s) to any modifications. Any unexpected users, groups, or modifications should be investigated for legitimacy.\n\nSatisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000304-GPOS-00121, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000470-GPOS-00214, SRG-OS-000471-GPOS-00215, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221","checkContent":"Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/security/opasswd\" with the following command:\n\n$ sudo auditctl -l | egrep '(/etc/security/opasswd)'\n-a always,exit -F arch=b32 -F path=/etc/security/opasswd -F perm=wa -F key=identity\n-a always,exit -F arch=b64 -F path=/etc/security/opasswd -F perm=wa -F key=identity\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/security/opasswd\".\n\nAdd or update the following file system rule to \"/etc/audit/rules.d/audit.rules\":\n\n-a always,exit -F arch=b32 -F path=/etc/security/opasswd -F perm=wa -F key=identity\n-a always,exit -F arch=b64 -F path=(/etc/security/opasswd -F perm=wa -F key=identity\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000018","CCI-000130","CCI-000135","CCI-000169","CCI-000015","CCI-002884","CCI-000172","CCI-001403","CCI-001404","CCI-001405","CCI-002130"]},{"vulnId":"V-281159","ruleId":"SV-281159r1166429_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/passwd\".","description":"In addition to auditing new user and group accounts, these watches will alert the system administrator(s) to any modifications. Any unexpected users, groups, or modifications should be investigated for legitimacy.\n\nSatisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000304-GPOS-00121, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000470-GPOS-00214, SRG-OS-000471-GPOS-00215, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221, SRG-OS-000274-GPOS-00104, SRG-OS-000275-GPOS-00105, SRG-OS-000276-GPOS-00106, SRG-OS-000277-GPOS-00107","checkContent":"Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/passwd\" with the following command:\n\n$ sudo auditctl -l | egrep '(/etc/passwd)'\n-a always,exit -F arch=b32 -F path=/etc/passwd -F perm=wa -F key=identity\n-a always,exit -F arch=b64 -F path=/etc/passwd -F perm=wa -F key=identity\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/passwd\".\n\nAdd or update the following file system rule to \"/etc/audit/rules.d/audit.rules\":\n\n-a always,exit -F arch=b32 -F path=/etc/passwd -F perm=wa -F key=identity\n-a always,exit -F arch=b64 -F path=/etc/passwd -F perm=wa -F key=identity\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000018","CCI-000130","CCI-000135","CCI-000169","CCI-000015","CCI-002884","CCI-000172","CCI-001403","CCI-001404","CCI-001405","CCI-002130"]},{"vulnId":"V-281160","ruleId":"SV-281160r1184695_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/shadow\".","description":"In addition to auditing new user and group accounts, these watches will alert the system administrator(s) to any modifications. Any unexpected users, groups, or modifications should be investigated for legitimacy.\n\nSatisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000304-GPOS-00121, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000470-GPOS-00214, SRG-OS-000471-GPOS-00215, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221","checkContent":"Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/shadow\" with the following command:\n\n$ sudo auditctl -l | egrep '(/etc/shadow)'\n-a always,exit -F arch=b32 -F path=/etc/shadow -F perm=wa -F key=identity\n-a always,exit -F arch=b64 -F path=/etc/shadow -F perm=wa -F key=identity\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/shadow\".\n\nAdd or update the following file system rule to \"/etc/audit/rules.d/audit.rules\":\n\n-a always,exit -F arch=b32 -F path=/etc/shadow -F perm=wa -F key=identity\n-a always,exit -F arch=b64 -F path=/etc/shadow -F perm=wa -F key=identity\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000018","CCI-000130","CCI-000135","CCI-000169","CCI-000015","CCI-002884","CCI-000172","CCI-001403","CCI-001404","CCI-001405","CCI-002130"]},{"vulnId":"V-281161","ruleId":"SV-281161r1166435_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect \"/var/log/faillock\".","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nSatisfies: SRG-OS-000392-GPOS-00172, SRG-OS-000470-GPOS-00214, SRG-OS-000473-GPOS-00218","checkContent":"Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect \"/var/log/faillock\" with the following command:\n\n$ sudo auditctl -l | grep /var/log/faillock\n-a always,exit -F arch=b32 -F path=/var/log/faillock -F perm=wa -F key=identity\n-a always,exit -F arch=b64 -F path=/var/log/faillock -F perm=wa -F key=identity\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/var/log/faillock\".\n\nAdd or update the following file system rule to \"/etc/audit/rules.d/audit.rules\":\n\n-a always,exit -F arch=b32 -F path=/var/log/faillock -F perm=wa -F key=identity\n-a always,exit -F arch=b64 -F path=/var/log/faillock -F perm=wa -F key=identity\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-002884","CCI-000172"]},{"vulnId":"V-281162","ruleId":"SV-281162r1166438_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for all account creations, modifications, disabling, and termination events that affect \"/var/log/lastlog\".","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000473-GPOS-00218, SRG-OS-000470-GPOS-00214","checkContent":"Verify RHEL 10 generates audit records for all account creations, modifications, disabling, and termination events that affect \"/var/log/lastlog\" with the following command:\n\n$ sudo auditctl -l | grep /var/log/lastlog\n-a always,exit -F arch=b32 -F path=/var/log/lastlog -F perm=wa -F key=logins\n-a always,exit -F arch=b64 -F path=/var/log/lastlog -F perm=wa -F key=logins\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/var/log/lastlog\".\n\nAdd or update the following file system rule to \"/etc/audit/rules.d/audit.rules\":\n\n-a always,exit -F arch=b32 -F path=/var/log/lastlog -F perm=wa -F key=logins\n-a always,exit -F arch=b64 -F path=/var/log/lastlog -F perm=wa -F key=logins\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281163","ruleId":"SV-281163r1166441_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for all uses of the \"chmod\", \"fchmod\", \"fchmodat\", and \"fchmodat2\" syscalls.","description":"Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account that is being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each syscall made by all programs on the system. Therefore, it is very important to use syscall rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining syscalls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000466-GPOS-00210, SRG-OS-000458-GPOS-00203","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"chmod\", \"fchmod\", \"fchmodat\", and \"fchmodat2\" syscalls with the following command:\n\n$ sudo auditctl -l | grep chmod\n-a always,exit -F arch=b32 -S chmod,fchmod,fchmodat,fchmodat2 -F auid>=1000 -F auid!=unset -k perm_mod\n-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat,fchmodat2 -F auid>=1000 -F auid!=unset -k perm_mod\n\nIf both the \"b32\" and \"b64\" audit rules are not defined for the \"chmod\", \"fchmod\", \"fchmodat\", and \"fchmodat2\" syscalls, this is a finding.","fixText":"Configure RHEL 10 to generate audit records upon successful and unsuccessful attempts to use the \"chmod\", \"fchmod\", \"fchmodat\", and \"fchmodat2\" syscalls.\n\nAdd or update the following rules in \"/etc/audit/rules.d/audit.rules\":\n\n-a always,exit -F arch=b32 -S chmod,fchmod,fchmodat,fchmodat2 -F auid>=1000 -F auid!=unset -k perm_mod\n\n-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat,fchmodat2 -F auid>=1000 -F auid!=unset -k perm_mod\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281164","ruleId":"SV-281164r1166444_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for all uses of the \"chown\", \"fchown\", \"fchownat\", and \"lchown\" syscalls.","description":"Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account that is being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each syscall made by all programs on the system. Therefore, it is very important to use syscall rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining syscalls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000466-GPOS-00210, SRG-OS-000458-GPOS-00203, SRG-OS-000474-GPOS-00219","checkContent":"Verify RHEL 10 is configured to audit the execution of the \"chown\", \"fchown\", \"fchownat\", and \"lchown\" syscalls with the following command:\n\n$ sudo auditctl -l | grep chown\n-a always,exit -F arch=b32 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=unset -k perm_mod\n-a always,exit -F arch=b64 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=unset -k perm_mod\n\nIf both the \"b32\" and \"b64\" audit rules are not defined for the \"chown\", \"fchown\", \"fchownat\", and \"lchown\" syscalls, this is a finding.","fixText":"Configure RHEL 10 to generate audit records upon successful/unsuccessful attempts to use the \"chown\", \"fchown\", \"fchownat\", and \"lchown\"\" syscalls.\n\nAdd or update the following rules in \"/etc/audit/rules.d/audit.rules\":\n\n-a always,exit -F arch=b32 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=unset -k perm_mod\n-a always,exit -F arch=b64 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=unset -k perm_mod\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281165","ruleId":"SV-281165r1166447_rule","severity":"medium","ruleTitle":"RHEL 10 must generate audit records for all uses of the \"rename\", \"unlink\", \"rmdir\", \"renameat\", \"renameat2\", and \"unlinkat\" system calls.","description":"Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account that is being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each syscall made by all programs on the system. Therefore, it is very important to use syscall rules only when absolutely necessary because these affect performance. More rules lead to poorer performance. The performance can be helped, however, by combining syscalls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210, SRG-OS-000467-GPOS-00211, SRG-OS-000468-GPOS-00212","checkContent":"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:\n\n$ sudo auditctl -l | grep 'rename\\|unlink\\|rmdir'\n-a always,exit -F arch=b32 -S rename,unlink,rmdir,renameat,renameat2,unlinkat -F auid>=1000 -F auid!=unset -k delete\n-a always,exit -F arch=b64 -S rename,unlink,rmdir,renameat,renameat2,unlinkat -F auid>=1000 -F auid!=unset -k delete\n\nIf 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.","fixText":"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:\n\n-a always,exit -F arch=b32 -S rename,unlink,rmdir,renameat,renameat2,unlinkat -F auid>=1000 -F auid!=unset -k delete\n-a always,exit -F arch=b64 -S rename,unlink,rmdir,renameat,renameat2,unlinkat -F auid>=1000 -F auid!=unset -k delete\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-281166","ruleId":"SV-281166r1166450_rule","severity":"medium","ruleTitle":"RHEL 10 must require a boot loader superuser password.","description":"To mitigate the risk of unauthorized access to sensitive information by entities that have been issued certificates by DOD-approved PKIs, all DOD systems (e.g., web servers and web portals) must be properly configured to incorporate access control methods that do not rely solely on the possession of a certificate for access. \n\nSuccessful authentication must not automatically give an entity access to an asset or security boundary. Authorization procedures and controls must be implemented to ensure each authenticated entity also has a validated and current authorization. Authorization is the process of determining whether an entity, once authenticated, is permitted to access a specific asset. Information systems use access control policies and enforcement mechanisms to implement this requirement.\n\nPassword protection on the boot loader configuration ensures users with physical access cannot trivially alter important bootloader settings. These include which kernel to use and whether to enter single-user mode.","checkContent":"Verify RHEL 10 requires a boot loader superuser password with the following command:\n\n$ sudo grep password_pbkdf2 /etc/grub2.cfg\n     password_pbkdf2  <superusers-accountname>   ${GRUB2_PASSWORD}\n\nTo verify the boot loader superuser account password has been set and the password encrypted, run the following command:\n\n$ sudo cat /boot/grub2/user.cfg\nGRUB2_PASSWORD=grub.pbkdf2.sha512.10000.C4E08AC72FBFF7E837FD267BFAD7AEB3D42DDC\n2C99F2A94DD5E2E75C2DC331B719FE55D9411745F82D1B6CFD9E927D61925F9BBDD1CFAA0080E0\n916F7AB46E0D.1302284FCCC52CD73BA3671C6C12C26FF50BA873293B24EE2A96EE3B57963E6D7\n0C83964B473EC8F93B07FE749AA6710269E904A9B08A6BBACB00A2D242AD828\n\nIf a \"GRUB2_PASSWORD\" is not set, this is a finding.","fixText":"Configure RHEL 10 to require a grub bootloader password for the grub superuser account.\n\nGenerate an encrypted grub2 password for the grub superuser account with the following command:\n\n$ sudo grub2-setpassword\nEnter password:\nConfirm password:","ccis":["CCI-000213"]},{"vulnId":"V-281167","ruleId":"SV-281167r1166453_rule","severity":"medium","ruleTitle":"RHEL 10 must require a unique superusers name upon booting into single-user and maintenance modes.","description":"Having a nondefault grub superuser username makes password-guessing attacks less effective.","checkContent":"Verify RHEL 10 requires a unique superusers name upon booting into single-user and maintenance modes.\n\nVerify that the boot loader superuser account has been set with the following command:\n\n$ sudo grep -A1 \"superusers\" /etc/grub2.cfg\nset superusers=\"<accountname>\"\nexport superusers\npassword_pbkdf2 <accountname> ${GRUB2_PASSWORD}\n\nVerify <accountname> is not a common name such as root, admin, or administrator.\n\nIf superusers contains easily guessable usernames, this is a finding.","fixText":"Configure RHEL 10 to have a unique username for the grub superuser account.\n\nEdit the \"/etc/grub.d/01_users\" file and add or modify the following lines with a nondefault username for the superuser account:\n\nset superusers=\"<accountname>\"\nexport superusers\n\nOnce the superuser account has been added, update the \"grub.cfg\" file by regenerating the GRUB configuration with the following command:\n\n$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline\n\nReboot the system:\n\n$ sudo reboot","ccis":["CCI-000213"]},{"vulnId":"V-281168","ruleId":"SV-281168r1195416_rule","severity":"medium","ruleTitle":"RHEL 10 must not assign an interactive login shell for system accounts.","description":"Ensuring shells are not given to system accounts upon login makes it more difficult for attackers to use system accounts.","checkContent":"Verify RHEL 10 system accounts do not have an interactive login shell with the following command:\n\n$ awk -F: '($3<1000){print $1 \":\" $3 \":\" $7}' /etc/passwd\nroot:0:/bin/bash\nbin:1:/sbin/nologin\ndaemon:2:/sbin/nologin\nadm:3:/sbin/nologin\nlp:4:/sbin/nologin\n\nIdentify the listed system accounts that have a shell other than nologin.\n\nIf any system account (other than the root account) has a login shell and it is not documented with the information system security officer (ISSO), this is a finding.","fixText":"Configure RHEL 10 so that all noninteractive accounts on the system do not have an interactive shell assigned to them.\n\nIf the system account needs a shell assigned for mission operations, document the need with the ISSO.\n\nRun the following command to disable the interactive shell for a specific noninteractive user account:\n\nReplace <user> with the user that has a login shell.\n\n$ sudo usermod --shell /sbin/nologin <user>\n\nDo not perform the steps in this section on the root account. Doing so will cause the system to become inaccessible.","ccis":["CCI-002696"]},{"vulnId":"V-281169","ruleId":"SV-281169r1166459_rule","severity":"medium","ruleTitle":"RHEL 10 must, for new users or password changes, have a 60-day maximum password lifetime restriction for user account passwords in \"/etc/login.defs\".","description":"Any password, no matter how complex, can eventually be cracked; therefore, passwords must be changed periodically. If the operating system does not limit the lifetime of passwords and force users to change their passwords, there is the risk that the operating system passwords could be compromised.\n\nSetting the password maximum age ensures users are required to periodically change their passwords. Requiring shorter password lifetimes increases the risk of users writing down the password in a convenient location subject to physical compromise.","checkContent":"Verify RHEL 10 enforces a 60-day maximum password lifetime for new user accounts by running the following command:\n\n$ sudo grep -i pass_max_days /etc/login.defs\nPASS_MAX_DAYS 60\n\nIf the \"PASS_MAX_DAYS\" parameter value is greater than \"60\" or is commented out, this is a finding.","fixText":"Configure RHEL 10 to enforce a 60-day maximum password lifetime.\n\nAdd or modify the following line in the \"/etc/login.defs\" file:\n\nPASS_MAX_DAYS 60","ccis":["CCI-004066"]},{"vulnId":"V-281170","ruleId":"SV-281170r1184651_rule","severity":"medium","ruleTitle":"RHEL 10 must, for user account passwords, have a 60-day maximum password lifetime restriction.","description":"Any password, no matter how complex, can eventually be cracked. Therefore, passwords must be changed periodically. If the operating system does not limit the lifetime of passwords and force users to change their passwords, there is the risk that the operating system passwords could be compromised.","checkContent":"Verify RHEL 10 enforces a 60-day maximum time period for existing user account passwords with the following commands:\n\n$ sudo awk -F: '$5 > 60 {print $1 \"\" \"\" $5}' /etc/shadow\n\n$ sudo awk -F: '$5 <= 0 {print $1 \"\" \"\" $5}' /etc/shadow\n\nIf any results are returned that are not associated with a system account, this is a finding.","fixText":"Configure RHEL 10 to enforce a 60-day maximum password lifetime restriction on user account passwords.\n\nSet the 60-day maximum password lifetime restriction with the following command:\n\n$ sudo passwd -x 60 [user]","ccis":["CCI-004066"]},{"vulnId":"V-281171","ruleId":"SV-281171r1166465_rule","severity":"medium","ruleTitle":"RHEL 10 must assign a home directory for local interactive user accounts upon creation.","description":"If local interactive users are not assigned a valid home directory, there is no place for the storage and control of files they should own.","checkContent":"Verify RHEL 10 assigns a home directory for local interactive user accounts upon creation with the following command:\n\n$ sudo grep -i create_home /etc/login.defs\nCREATE_HOME yes\n\nIf 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.","fixText":"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:\n\nCREATE_HOME yes","ccis":["CCI-002824"]},{"vulnId":"V-281172","ruleId":"SV-281172r1166468_rule","severity":"medium","ruleTitle":"RHEL 10 must not allow duplicate user IDs (UIDs) to exist for interactive users.","description":"To ensure accountability and prevent unauthenticated access, interactive users must be identified and authenticated to prevent potential misuse and compromise of the system.\n\nSatisfies: SRG-OS-000104-GPOS-00051, SRG-OS-000121-GPOS-00062","checkContent":"Verify RHEL 10 contains no duplicate UIDs for interactive users with the following command:\n\n$ sudo awk -F \":\" 'list[$3]++{print $1, $3}' /etc/passwd\n\nIf output is produced and the accounts listed are interactive user accounts, this is a finding.","fixText":"Configure RHEL 10 to not allow duplicate UIDs to exist for interactive users.\n\nEdit the file \"/etc/passwd\", and provide each interactive user account that has a duplicate UID with a unique UID.","ccis":["CCI-000764","CCI-000804"]},{"vulnId":"V-281173","ruleId":"SV-281173r1166471_rule","severity":"medium","ruleTitle":"RHEL 10 must automatically expire temporary accounts within 72 hours.","description":"Temporary accounts are privileged or nonprivileged accounts that are established during pressing circumstances, such as new software or hardware configuration or an incident response, where the need for prompt account activation requires bypassing normal account authorization procedures. If any inactive temporary accounts are left enabled on the system and are not manually removed or automatically expired within 72 hours, the security posture of the system will be degraded and exposed to exploitation by unauthorized users or insider threat actors.\n\nTemporary accounts are different from emergency accounts. Emergency accounts, also known as \"last resort\" or \"break glass\" accounts, are local login accounts enabled on the system for emergency use by authorized system administrators to manage a system when standard login methods are failing or not available. Emergency accounts are not subject to manual removal or scheduled expiration requirements.\n\nThe automatic expiration of temporary accounts may be extended as needed by the circumstances, but it must not be extended indefinitely. A documented permanent account should be established for privileged users who need long-term maintenance accounts.\n\nSatisfies: SRG-OS-000123-GPOS-00064, SRG-OS-000002-GPOS-00002","checkContent":"Verify RHEL 10 automatically expires temporary accounts within 72 hours.\n\nFor every existing temporary account, run the following command to obtain its account expiration information:\n\n$ sudo chage -l <temporary_account_name> | grep -i \"account expires\"\n\nVerify each of these accounts has an expiration date set within 72 hours.\n\nIf any temporary accounts have no expiration date set or do not expire within 72 hours, this is a finding.","fixText":"Configure RHEL 10 to expire temporary accounts after 72 hours with the following command:\n\n$ sudo chage -E $(date -d +3days +%Y-%m-%d) <temporary_account_name>","ccis":["CCI-001682","CCI-000016"]},{"vulnId":"V-281174","ruleId":"SV-281174r1166474_rule","severity":"medium","ruleTitle":"RHEL 10 must assign a primary group to all interactive users.","description":"If a user is assigned the group identifier (GID) of a group that does not exist on the system, and a group with the GID is subsequently created, the user may have unintended rights to any files associated with the group.","checkContent":"Verify RHEL 10 interactive users have a valid GID.\n\nCheck that the interactive users have a valid GID with the following command:\n\n$ sudo pwck -r\n\nIf pwck reports \"no group\" for any interactive user, this is a finding.","fixText":"Configure RHEL 10 so that all GIDs referenced in \"/etc/passwd\" are defined in \"/etc/group\".\n\nEdit the file \"/etc/passwd\" and ensure that every user's GID is a valid GID.","ccis":["CCI-000764"]},{"vulnId":"V-281175","ruleId":"SV-281175r1197238_rule","severity":"medium","ruleTitle":"RHEL 10 must disable account identifiers (individuals, groups, roles, and devices) after 35 days of inactivity.","description":"Inactive identifiers pose a risk to systems and applications because attackers may exploit an inactive identifier and potentially obtain undetected access to the system.\n\nDisabling inactive accounts ensures accounts that may not have been responsibly removed are not available to attackers who may have compromised their credentials.\n\nOwners of inactive accounts will not notice if unauthorized access to their user account has been obtained.\n\nSatisfies: SRG-OS-000118-GPOS-00060, SRG-OS-000590-GPOS-00110","checkContent":"Verify RHEL 10 account identifiers (individuals, groups, roles, and devices) are disabled after 35 days of inactivity.\n\nCheck the account inactivity value by performing the following command:\n\n$ sudo grep -i inactive /etc/default/useradd\nINACTIVE=35\n\nIf \"INACTIVE\" is set to \"-1\", a value greater than \"35\", or is commented out, this is a finding.","fixText":"Configure RHEL 10 to disable account identifiers after 35 days of inactivity after the password expiration.\n\nRun the following command to change the configuration for \"useradd\":\n\n$ sudo useradd -D -f 35\n\nA recommendation is 35 days, but a lower value is acceptable.","ccis":["CCI-003627","CCI-003628"]},{"vulnId":"V-281176","ruleId":"SV-281176r1166480_rule","severity":"medium","ruleTitle":"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.","description":"The executable search path (typically the PATH environment variable) contains a list of directories for the shell to search to find executables. If this path includes the current working directory (other than the user's home directory), executables in these directories may be executed instead of system commands.\n\nThis variable is formatted as a colon-separated list of directories. If there is an empty entry, such as a leading or trailing colon or two consecutive colons, this is interpreted as the current working directory. If deviations from the default system search path for the local interactive user are required, they must be documented with the information system security officer (ISSO).","checkContent":"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:\n\n$ sudo find /home -maxdepth 2 -type f -name \".[^.]*\" -exec grep -iH path= {} \\;\nPATH=\"$HOME/.local/bin:$HOME/bin:$PATH\"\n\nIf 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.","fixText":"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.\n\nEdit the local interactive user initialization files to change any PATH variable statements that reference directories other than their home directory.\n\nIf a local interactive user requires path variables to reference a directory owned by the application, it must be documented with the ISSO.","ccis":["CCI-003980"]},{"vulnId":"V-281177","ruleId":"SV-281177r1184748_rule","severity":"medium","ruleTitle":"RHEL 10 must assign a home directory to all local interactive users in the \"/etc/passwd\" file.","description":"If local interactive users are not assigned a valid home directory, there is no place for the storage and control of files they should own.","checkContent":"Verify RHEL 10 interactive users have a home directory assigned with the following command:\n\n$ sudo awk -F: '($3>=1000)&&($7 !~ /nologin/){print $1, $3, $6}' /etc/passwd\nnsauser:x:1000:1000:nsauser:/home/nsauser:/bin/bash\ndisauser:x:1001:1001:disauser:/home/disauser:/bin/bash\ndoduser:x:1002:1002:doduser:/home/doduser:/bin/bash\n\nInspect the output and verify that all interactive users (normally users with a user identifier [UID] greater than 1000) have a home directory defined.\n\nIf a user's home directory is not defined, this is a finding.","fixText":"Configure RHEL 10 interactive users to have a home directory assigned in the \"/etc/passwd\" file.\n\nCreate and assign home directories to all local interactive users on RHEL 10 that do not have a home directory assigned.","ccis":["CCI-002385"]},{"vulnId":"V-281178","ruleId":"SV-281178r1195418_rule","severity":"medium","ruleTitle":"RHEL 10 must ensure that all local interactive user home directories defined in the \"/etc/passwd\" file must exist.","description":"If a local interactive user has a home directory defined that does not exist, the user may be given access to the / directory as the current working directory upon login. This could create a denial of service because the user would not be able to access their login configuration files, and it may give them visibility to system files they normally would not be able to access.","checkContent":"Verify RHEL 10 interactive users' home directories exist on the system with the following command:\n\n$ sudo pwck -r\nuser 'mailnull': directory 'var/spool/mqueue' does not exist\n\nThe output should not return any interactive users.\n\nIf an interactive user's home directory does not exist, this is a finding.","fixText":"Configure RHEL 10 interactive users' home directories to exist on the system.\n\nCreate 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\":\n\nNote: 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\".\n\n$ sudo mkdir /home/disauser\n$ sudo chown disauser /home/disauser\n$ sudo chgrp users /home/disauser\n$ sudo chmod 0750 /home/disauser","ccis":["CCI-002385"]},{"vulnId":"V-281179","ruleId":"SV-281179r1166489_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce a delay of at least four seconds between login prompts following a failed login attempt.","description":"Increasing the time between a failed authentication attempt and reprompting to enter credentials helps to slow a single-threaded brute-force attack.","checkContent":"Verify RHEL 10 enforces a delay of at least four seconds between console login prompts following a failed login attempt with the following command:\n\n$ sudo grep -i fail_delay /etc/login.defs\nFAIL_DELAY 4\n\nIf the value of \"FAIL_DELAY\" is not set to \"4\" or greater, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to enforce a delay of at least four seconds between login prompts following a failed console login attempt.\n\nModify the \"/etc/login.defs\" file to set the \"FAIL_DELAY\" parameter to \"4\" or greater:\n\nFAIL_DELAY 4","ccis":["CCI-002238"]},{"vulnId":"V-281180","ruleId":"SV-281180r1166492_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce a 24-hours minimum password lifetime restriction for passwords for new users or password changes in \"/etc/login.defs\".","description":"Enforcing a minimum password lifetime helps to prevent repeated password changes to defeat the password reuse or history enforcement requirement. If users are allowed to immediately and continually change their password, the password could be repeatedly changed in a short period of time to defeat the organization's policy regarding password reuse.\n\nSetting the minimum password age protects against users cycling back to a favorite password after satisfying the password reuse requirement.","checkContent":"Verify RHEL 10 enforces 24 hours as the minimum password lifetime for new user accounts.\n\nCheck for the value of \"PASS_MIN_DAYS\" in \"/etc/login.defs\" with the following command:\n\n$ sudo grep -i pass_min_days /etc/login.defs\nPASS_MIN_DAYS 1\n\nIf the \"PASS_MIN_DAYS\" parameter value is not \"1\" or greater or is commented out, this is a finding.","fixText":"Configure RHEL 10 to enforce 24 hours as the minimum password lifetime.\n\nAdd the following line in \"/etc/login.defs\" (or modify the line to have the required value):\n\nPASS_MIN_DAYS 1","ccis":["CCI-004066"]},{"vulnId":"V-281181","ruleId":"SV-281181r1195421_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce that passwords be created with a minimum of 15 characters.","description":"The shorter the password, the lower the number of possible combinations that must be tested before the password is compromised.\n\nPassword complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password length is one factor of several that helps to determine strength and how long it takes to crack a password. Use of more characters in a password helps to increase exponentially the time and/or resources required to compromise the password.\n\nRHEL 10 uses \"pwquality\" as a mechanism to enforce password complexity. Configurations are set in the \"etc/security/pwquality.conf\" file.\n\nThe \"minlen\", sometimes noted as minimum length, acts as a \"score\" of complexity based on the credit components of the \"pwquality\" module. By setting the credit components to a negative value, those components will not only be required but will not count toward the total \"score\" of \"minlen\". This will enable \"minlen\" to require a 15-character minimum.\n\nThe DOD minimum password requirement is 15 characters.","checkContent":"Verify RHEL 10 enforces a minimum 15-character password length with the following command:\n\n$ sudo grep -s minlen /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf\n/etc/security/pwquality.conf:minlen = 15\n\nIf 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.","fixText":"Configure RHEL 10 to enforce a minimum 15-character password length.\n\nAdd 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:\n\nminlen = 15","ccis":["CCI-004066"]},{"vulnId":"V-281182","ruleId":"SV-281182r1195424_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce password complexity by requiring at least one special character to be used.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks.\n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that must be tested before the password is compromised.\n\nRHEL 10 uses \"pwquality\" as a mechanism to enforce password complexity. Note that to require special characters without degrading the \"minlen\" value, the credit value must be expressed as a negative number in \"/etc/security/pwquality.conf\".","checkContent":"Verify RHEL 10 enforces password complexity by requiring that at least one special character be used with the following command:\n\n$ sudo grep -s ocredit /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf\n/etc/security/pwquality.conf:# ocredit = 0\n\nIf the value of \"ocredit\" is a positive number or is commented out, this is a finding.","fixText":"Configure RHEL 10 to enforce password complexity by requiring that at least one special character be used by setting the \"ocredit\" option.\n\nAdd 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:\n\nocredit = -1","ccis":["CCI-004066"]},{"vulnId":"V-281183","ruleId":"SV-281183r1195427_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce password complexity by requiring that at least one lowercase character be used.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks.\n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that must be tested before the password is compromised.\n\nRequiring a minimum number of lowercase characters makes password guessing attacks more difficult by ensuring a larger search space.","checkContent":"Verify RHEL 10 enforces password complexity by requiring that at least one lowercase character be used with the following command:\n\n$ sudo grep -s lcredit /etc/security/pwquality.conf /etc/security/pwquality.conf/*.conf\n/etc/security/pwquality.conf:lcredit = -1\n\nIf the value of \"lcredit\" is a positive number or is commented out, this is a finding.","fixText":"Configure RHEL 10 to enforce password complexity by requiring that at least one lowercase character be used by setting the \"lcredit\" option.\n\nAdd 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:\n\nlcredit = -1","ccis":["CCI-004066"]},{"vulnId":"V-281184","ruleId":"SV-281184r1197239_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce password complexity by requiring that at least one uppercase character be used.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks.\n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that must be tested before the password is compromised.\n\nRequiring a minimum number of uppercase characters makes password guessing attacks more difficult by ensuring a larger search space.\n\nSatisfies: SRG-OS-000069-GPOS-00037, SRG-OS-000070-GPOS-00038","checkContent":"Verify RHEL 10 enforces password complexity by requiring that at least one uppercase character be used.\n\nCheck the value for \"ucredit\" with the following command:\n\n$ sudo grep -s ucredit /etc/security/pwquality.conf /etc/security/pwquality.conf/*.conf\n/etc/security/pwquality.conf:ucredit = -1\n\nIf the value of \"ucredit\" is a positive number or is commented out, this is a finding.","fixText":"Configure RHEL 10 to enforce password complexity by requiring that at least one uppercase character be used by setting the \"ucredit\" option.\n\nAdd 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:\n\nucredit = -1","ccis":["CCI-004066"]},{"vulnId":"V-281185","ruleId":"SV-281185r1195433_rule","severity":"medium","ruleTitle":"RHEL 10 must require the change of at least eight characters when passwords are changed.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute–force attacks.\n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that must be tested before the password is compromised.\n\nRequiring a minimum number of different characters during password changes ensures that newly changed passwords should not resemble previously compromised ones.\n\nNote that passwords that are changed on compromised systems will still be compromised.","checkContent":"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:\n\n$ sudo grep difok -s /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf\n/etc/security/pwquality.conf:difok = 8\n\nIf the value of \"difok\" is set to less than \"8\" or is commented out, this is a finding.","fixText":"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.\n\nAdd 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:\n\ndifok = 8","ccis":["CCI-004066"]},{"vulnId":"V-281186","ruleId":"SV-281186r1184622_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce that passwords have a 24 hours/1 day minimum lifetime restriction in \"/etc/shadow\".","description":"Enforcing a minimum password lifetime helps to prevent repeated password changes to defeat the password reuse or history enforcement requirement. If users are allowed to immediately and continually change their password, the password could be repeatedly changed in a short period of time to defeat the organization's policy for password reuse.","checkContent":"Verify the minimum time period between password changes for each user account is one day or greater with the following command:\n\n$ sudo awk -F: '$4 < 1 {printf \"%s %d\\n\", $1, $4}' /etc/shadow\n\nIf any results are returned that are not associated with a system account, this is a finding.","fixText":"Configure RHEL 10 so that noncompliant accounts enforce a 24 hours/1 day minimum password lifetime:\n\n$ sudo passwd -n 1 [user]","ccis":["CCI-004066"]},{"vulnId":"V-281187","ruleId":"SV-281187r1195436_rule","severity":"medium","ruleTitle":"RHEL 10 must require the maximum number of repeating characters of the same character class to be limited to four when passwords are changed.","description":"Use of a complex password helps to increase the time and resources required to compromise the password.\n\nPassword complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks.\n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex a password is, the greater the number of possible combinations that must be tested before the password is compromised.\n\nSatisfies: SRG-OS-000072-GPOS-00040, SRG-OS-000730-GPOS-00190","checkContent":"Verify RHEL 10 limits the value of the \"maxclassrepeat\" option in \"/etc/security/pwquality.conf\" with the following command:\n\n$ sud grep -s maxclassrepeat /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf\n/etc/security/pwquality.conf:maxclassrepeat = 4\n\nIf the value of \"maxclassrepeat\" is set to \"0\" or more than \"4\" or is commented out, this is a finding.","fixText":"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.\n\nAdd 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:\n\nmaxclassrepeat = 4","ccis":["CCI-004066","CCI-004065"]},{"vulnId":"V-281188","ruleId":"SV-281188r1195439_rule","severity":"medium","ruleTitle":"RHEL 10 must require that the maximum number of repeating characters be limited to three when passwords are changed.","description":"Use of a complex password helps to increase the time and resources required to compromise the password.\n\nPassword complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks.\n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex a password is, the greater the number of possible combinations that must be tested before the password is compromised.","checkContent":"Verify RHEL 10 limits the value of the \"maxrepeat\" option in \"/etc/security/pwquality.conf\" with the following command:\n\n$ sudo grep -s maxrepeat /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf\n/etc/security/pwquality.conf:maxrepeat = 3\n\nIf the value of \"maxrepeat\" is set to more than \"3\" or is commented out, this is a finding.","fixText":"Configure RHEL 10 to require the change of the number of repeating consecutive characters when passwords are changed by setting the \"maxrepeat\" option.\n\nAdd 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:\n\nmaxrepeat = 3","ccis":["CCI-004066"]},{"vulnId":"V-281189","ruleId":"SV-281189r1195442_rule","severity":"medium","ruleTitle":"RHEL 10 must require the change of at least four character classes when passwords are changed.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. \n\nPassword complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks.\n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex a password is, the greater the number of possible combinations that must be tested before the password is compromised.","checkContent":"Verify RHEL 10 sets the value of the \"minclass\" option in \"/etc/security/pwquality.conf\" with the following command:\n\n$ sudo grep -s minclass /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf\n/etc/security/pwquality.conf:minclass = 4\n\nIf the value of \"minclass\" is set to less than \"4\" or is commented out, this is a finding.","fixText":"Configure RHEL 10 to require the change of at least four character classes when passwords are changed by setting the \"minclass\" option.\n\nAdd 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:\n\nminclass = 4","ccis":["CCI-004066"]},{"vulnId":"V-281190","ruleId":"SV-281190r1195445_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce password complexity by requiring that at least one numeric character be used.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks.\n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password is, the greater the number of possible combinations that must be tested before the password is compromised.\n\nRequiring digits makes password guessing attacks more difficult by ensuring a larger search space.","checkContent":"Verify RHEL 10 enforces password complexity by requiring that at least one numeric character be used.\n\nCheck the value for \"dcredit\" with the following command:\n\n$ sudo grep -s dcredit /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf\n/etc/security/pwquality.conf:dcredit = -1\n\nIf the value of \"dcredit\" is a positive number or is commented out, this is a finding.","fixText":"Configure RHEL 10 to enforce password complexity by requiring that at least one numeric character be used by setting the \"dcredit\" option.\n\nAdd 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:\n\ndcredit = -1","ccis":["CCI-004066"]},{"vulnId":"V-281191","ruleId":"SV-281191r1195448_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent the use of dictionary words for passwords.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks.\n\nIf RHEL 10 allows the user to select passwords based on dictionary words, this increases the chances of password compromise by increasing the opportunity for successful guesses and brute-force attacks.\n\nSatisfies: SRG-OS-000480-GPOS-00225, SRG-OS-000072-GPOS-00040","checkContent":"Verify RHEL 10 prevents the use of dictionary words for passwords with the following command:\n\n$ sudo grep -s dictcheck /etc/security/pwquality.conf /etc/pwquality.conf.d/*.conf\n/etc/security/pwquality.conf:dictcheck=1\n\nIf \"dictcheck\" does not have a value other than \"0\" or is commented out, this is a finding.","fixText":"Configure RHEL 10 to prevent the use of dictionary words for passwords.\n\nAdd 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:\n\ndictcheck=1","ccis":["CCI-004066"]},{"vulnId":"V-281192","ruleId":"SV-281192r1166528_rule","severity":"medium","ruleTitle":"RHEL 10 must allow only the root account to have unrestricted access to the system.","description":"An account has root authority if it has a user identifier (UID) of \"0\". Multiple accounts with a UID of \"0\" afford more opportunity for potential intruders to guess a password for a privileged account. Proper configuration of sudo is recommended to afford multiple system administrators access to root privileges in an accountable manner.","checkContent":"Verify RHEL 10 is configured so that only the \"root\" account has a UID \"0\" assignment with the following command:\n\n$ awk -F: '$3 == 0 {print $1}' /etc/passwd\nroot\n\nIf any accounts other than \"root\" have a UID of \"0\", this is a finding.","fixText":"Configure RHEL 10 so that only the \"root\" account has a UID assignment of \"0\".\n\nChange the UID of any account on the system, other than \"root\", that has a UID of \"0\".\n\nIf 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.","ccis":["CCI-000213"]},{"vulnId":"V-281193","ruleId":"SV-281193r1166531_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce password complexity rules for the \"root\" account.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks.\n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that must be tested before the password is compromised.\n\nSatisfies: SRG-OS-000072-GPOS-00040, SRG-OS-000071-GPOS-00039, SRG-OS-000070-GPOS-00038, SRG-OS-000266-GPOS-00101, SRG-OS-000078-GPOS-00046, SRG-OS-000480-GPOS-00225, SRG-OS-000069-GPOS-00037","checkContent":"Verify RHEL 10 enforces password complexity rules for the \"root\" account.\n\nCheck if \"root\" user is required to use complex passwords with the following command:\n\n$ sudo grep enforce_for_root /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf\n/etc/security/pwquality.conf:enforce_for_root\n\nIf \"enforce_for_root\" is commented out or is missing, this is a finding.","fixText":"Configure RHEL 10 to enforce password complexity on the \"root\" account.\n\nAdd 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:\n\nenforce_for_root","ccis":["CCI-004066"]},{"vulnId":"V-281194","ruleId":"SV-281194r1166534_rule","severity":"medium","ruleTitle":"RHEL 10 must automatically lock an account when three unsuccessful login attempts occur.","description":"By limiting the number of failed login attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-force attacks, is reduced. Limits are imposed by locking the account.\n\nSatisfies: SRG-OS-000329-GPOS-00128, SRG-OS-000021-GPOS-00005","checkContent":"Verify RHEL 10 is configured to lock an account after three unsuccessful login attempts with the following command:\n\n$ sudo grep 'deny =' /etc/security/faillock.conf\ndeny = 3\n\nIf the \"deny\" option is not set to \"3\" or less (but not \"0\"), or is missing or commented out, this is a finding.","fixText":"Configure RHEL 10 to lock an account when three unsuccessful login attempts occur.\n\nAdd/modify the \"/etc/security/faillock.conf\" file to match the following line:\n\ndeny = 3","ccis":["CCI-002238","CCI-000044"]},{"vulnId":"V-281195","ruleId":"SV-281195r1166537_rule","severity":"medium","ruleTitle":"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.","description":"By limiting the number of failed login attempts, the risk of unauthorized system access via user password guessing, also known as brute-forcing, is reduced. Limits are imposed by locking the account.\n\nSatisfies: SRG-OS-000329-GPOS-00128, SRG-OS-000021-GPOS-00005","checkContent":"Verify RHEL 10 is configured to lock the root account after three unsuccessful login attempts with the following command:\n\n$ sudo grep even_deny_root /etc/security/faillock.conf\neven_deny_root\n\nIf the \"even_deny_root\" option is not set or is missing or commented out, this is a finding.","fixText":"Configure RHEL 10 to lock out the \"root\" account after a number of incorrect login attempts using \"pam_faillock.so\".\n\nEnable the feature using the following command:\n\n$ sudo authselect enable-feature with-faillock\n\nEdit the \"/etc/security/faillock.conf\" by uncommenting or adding the following line:\n\neven_deny_root","ccis":["CCI-002238","CCI-000044"]},{"vulnId":"V-281196","ruleId":"SV-281196r1166540_rule","severity":"medium","ruleTitle":"RHEL 10 must automatically lock an account when three unsuccessful login attempts occur during a 15-minute time period.","description":"By limiting the number of failed login attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-forcing, is reduced. Limits are imposed by locking the account.\n\nSatisfies: SRG-OS-000329-GPOS-00128, SRG-OS-000021-GPOS-00005","checkContent":"Verify RHEL 10 locks an account after three unsuccessful login attempts within a period of 15 minutes with the following command:\n\n$ sudo grep fail_interval /etc/security/faillock.conf\nfail_interval = 900\n\nIf 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.","fixText":"Configure RHEL 10 to lock out the \"root\" account after a number of incorrect login attempts within 15 minutes using \"pam_faillock.so\". \n\nEnable the feature using the following command:\n\n$ authselect enable-feature with-faillock\n\nEdit the \"/etc/security/faillock.conf\" file as follows:\n\nfail_interval = 900","ccis":["CCI-002238","CCI-000044"]},{"vulnId":"V-281197","ruleId":"SV-281197r1166543_rule","severity":"medium","ruleTitle":"RHEL 10 must maintain an account lock until the locked account is released by an administrator.","description":"By limiting the number of failed login attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-forcing, is reduced. Limits are imposed by locking the account.\n\nSatisfies: SRG-OS-000329-GPOS-00128, SRG-OS-000021-GPOS-00005","checkContent":"Verify RHEL 10 is configured to lock an account after three unsuccessful login attempts until released by an administrator with the following command:\n\n$ sudo grep 'unlock_time =' /etc/security/faillock.conf\nunlock_time = 0\n\nIf the \"unlock_time\" option is not set to \"0\", or the line is missing or commented out, this is a finding.","fixText":"Configure RHEL 10 to lock an account after three unsuccessful login attempts until released by an administrator with the following command:\n\n$ authselect enable-feature with-faillock\n\nEdit the \"/etc/security/faillock.conf\" file as follows:\n\nunlock_time = 0","ccis":["CCI-002238","CCI-000044"]},{"vulnId":"V-281198","ruleId":"SV-281198r1166546_rule","severity":"medium","ruleTitle":"RHEL 10 must ensure account lockouts persist.","description":"Having lockouts persist across reboots ensures that an account is unlocked only by an administrator. If the lockouts did not persist across reboots, an attacker could reboot the system to continue brute force attacks against the accounts on the system.\n\nSatisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128","checkContent":"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:\n\n$ sudo grep -w dir /etc/security/faillock.conf\ndir = /var/log/faillock\n\nIf the \"dir\" option is not set to a nondefault documented tally log directory, is commented out, or is missing, this is a finding.","fixText":"Configure RHEL 10 to maintain the contents of the \"faillock\" directory after a reboot.\n\nAdd/modify the \"/etc/security/faillock.conf\" file to match the following line:\n\ndir = /var/log/faillock","ccis":["CCI-000044","CCI-002238"]},{"vulnId":"V-281199","ruleId":"SV-281199r1166549_rule","severity":"medium","ruleTitle":"RHEL 10 must not have unauthorized accounts.","description":"Having lockouts persist across reboots ensures that account is unlocked only by an administrator. If the lockouts did not persist across reboots, an attacker could reboot the system to continue brute force attacks against the accounts on the system.","checkContent":"Verify RHEL 10 has no unauthorized local interactive user accounts with the following command:\n\n$ less /etc/passwd\nroot:x:0:0:root:/root:/bin/bash\n...\nnsauser:x:1000:1000:nsauser:/home/nsauser:/bin/bash\ndoduser:x:1001:1001:doduser:/home/doduser:/bin/bash\n\nInteractive user accounts generally will have a user ID (UID) of 1000 or greater, a home directory in a specific partition, and an interactive shell.\n\nObtain 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.\n\nIf there are unauthorized local user accounts on the system, this is a finding.","fixText":"Configure RHEL 10 to have no unauthorized local interactive user accounts with the following command, where <unauthorized_user> is the unauthorized account:\n\n$ sudo userdel  <unauthorized_user>","ccis":["CCI-000213"]},{"vulnId":"V-281200","ruleId":"SV-281200r1166552_rule","severity":"medium","ruleTitle":"RHEL 10 must not allow blank or null passwords.","description":"If an account has an empty password, anyone could log in and run commands with the privileges of that account. Accounts with empty passwords must never be used in operational environments.","checkContent":"Verify RHEL 10 prohibits the use of null passwords with the following command:\n\n$ sudo grep -i nullok /etc/pam.d/system-auth /etc/pam.d/password-auth\n\nIf output is produced, this is a finding.\n\nIf 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.","fixText":"Configure RHEL 10 to prohibit the use of null passwords.\n\nIf PAM is managed with \"authselect\", use the following command to remove instances of \"nullok\":\n\n$ sudo authselect enable-feature without-nullok\n\nOtherwise, 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.\n\nNote: Manual changes to the listed file may be overwritten by the \"authselect\" program.","ccis":["CCI-004066"]},{"vulnId":"V-281201","ruleId":"SV-281201r1166555_rule","severity":"medium","ruleTitle":"RHEL 10 must not have accounts configured with blank or null passwords.","description":"If an account has an empty password, anyone could log in and run commands with the privileges of that account. Accounts with empty passwords should never be used in operational environments.","checkContent":"Verify RHEL 10 prohibits null or blank passwords with the following command:\n\n$ sudo awk -F: '!$2 {print $1}' /etc/shadow\n\nIf the command returns any results, this is a finding.","fixText":"Configure RHEL 10 so that all accounts have a password, or lock the account with the following commands:\n\nPerform a password reset:\n\n$ sudo passwd [username]\n\nTo lock an account:\n\n$ sudo passwd -l [username]","ccis":["CCI-004066"]},{"vulnId":"V-281202","ruleId":"SV-281202r1166558_rule","severity":"medium","ruleTitle":"RHEL 10 must have a unique group ID (GID) for each group in \"/etc/group\".","description":"To ensure accountability and prevent unauthenticated access, groups must be identified uniquely to prevent potential misuse and compromise of the system.","checkContent":"Verify RHEL 10 contains no duplicate GIDs for interactive users with the following command:\n\n $  cut -d : -f 3 /etc/group | uniq -d\n\nIf the system has duplicate GIDs, this is a finding.","fixText":"Configure RHEL 10 to contain no duplicate GIDs for interactive users.\n\nEdit the file \"/etc/group\", and provide each group that has a duplicate GID with a unique GID.","ccis":["CCI-000764"]},{"vulnId":"V-281203","ruleId":"SV-281203r1166561_rule","severity":"low","ruleTitle":"RHEL 10 must limit the number of concurrent sessions to 10 for all accounts and/or account types.","description":"Operating system management includes the ability to control the number of users and user sessions that use an operating system. Limiting the number of allowed users and sessions per user is helpful in reducing the risks related to denial-of-service (DoS) attacks.\n\nThis requirement addresses concurrent sessions for information system accounts and does not address concurrent sessions by single users via multiple system accounts. The maximum number of concurrent sessions should be defined based on mission needs and the operational environment for each system.","checkContent":"Verify RHEL 10 limits the number of concurrent sessions to \"10\" for all accounts and/or account types with the following command:\n\n$ sudo grep -rs maxlogins /etc/security/limits.conf /etc/security/limits.d/*.conf | grep -v '#'\n/etc/security/limits.d/maxlogins.conf:* hard maxlogins 10\n\nThis can be set as a global domain (with the * wildcard) but may be set differently for multiple domains.\n\nIf the \"maxlogins\" item is missing or commented out, or the value is set greater than \"10\" and is not documented with the information system security officer as an operational requirement for all domains that have the \"maxlogins\" item assigned, this is a finding.","fixText":"Configure RHEL 10 to limit the number of concurrent sessions to \"10\" for all accounts and/or account types.\n\nAdd the following line to the top of \"/etc/security/limits.conf\" or in a \".conf\" file defined in \"/etc/security/limits.d/\":\n\n* hard maxlogins 10","ccis":["CCI-000054"]},{"vulnId":"V-281204","ruleId":"SV-281204r1197240_rule","severity":"medium","ruleTitle":"RHEL 10 must ensure the password complexity module in the system-auth file is configured for three or fewer retries.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. \"pwquality\" enforces complex password construction configuration and has the ability to limit brute-force attacks on the system.\n\nRHEL 10 uses \"pwquality\" as a mechanism to enforce password complexity. This is set in both of the following: \n\n\"/etc/pam.d/password-auth\"\n\"/etc/pam.d/system-auth\"\n\nBy limiting the number of attempts to meet the pwquality module complexity requirements before returning with an error, the system will audit abnormal attempts at password changes.","checkContent":"Verify RHEL 10 is configured to limit the \"pwquality\" retry option to \"3\" with the following command:\n\n$ sudo grep -w retry /etc/security/pwquality.conf /etc/security/pwquality.conf.d/*.conf \nretry = 3 \n\nIf the value of \"retry\" is set to \"0\" or greater than \"3\", is commented out, or is missing, this is a finding.","fixText":"Configure RHEL 10 to limit the \"pwquality\" retry option to \"3\".\n\nAdd 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:\n\nretry = 3","ccis":["CCI-004066"]},{"vulnId":"V-281205","ruleId":"SV-281205r1166567_rule","severity":"medium","ruleTitle":"RHEL 10 must restrict the use of the \"su\" command.","description":"The \"su\" program allows commands to be run with a substitute user and group ID. It is commonly used to run commands as the root user. Limiting access to such commands is considered a good security practice.\n\nSatisfies: SRG-OS-000373-GPOS-00156, SRG-OS-000312-GPOS-00123","checkContent":"Verify RHEL 10 requires users to be members of the \"wheel\" group to run \"su\".\n\nVerify the configuration with the following command:\n\n$ sudo grep pam_wheel /etc/pam.d/su\nauth             required        pam_wheel.so use_uid\n\nIf a line for \"pam_wheel.so\" does not exist or is commented out, this is a finding.","fixText":"Configure RHEL 10 to require users to be in the \"wheel\" group to run the \"su\" command.\n\nEdit the configuration file:\n\n$ sudo vi /etc/pam.d/su\n\nAdd the following lines:\n\nauth    required    pam_wheel.so use_uid\n$ sed '/^[[:space:]]*#[[:space:]]*auth[[:space:]]\\+required[[:space:]]\\+pam_wheel\\.so[[:space:]]\\+use_uid$/s/^[[:space:]]*#//' -i /etc/pam.d/su\n\nIf necessary, create a \"wheel\" group and add administrative users to the group.","ccis":["CCI-002038","CCI-002165"]},{"vulnId":"V-281206","ruleId":"SV-281206r1166570_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured to not bypass password requirements for privilege escalation.","description":"Without reauthentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user reauthenticate.\n\nSatisfies: SRG-OS-000373-GPOS-00156, SRG-OS-000373-GPOS-00157, SRG-OS-000373-GPOS-00158","checkContent":"Verify RHEL 10 is not configured to bypass password requirements for privilege escalation with the following command:\n\n$ sudo grep pam_succeed_if /etc/pam.d/sudo\n\nIf any occurrences of \"pam_succeed_if\" are returned, this is a finding.","fixText":"Configure RHEL 10 to require users to supply a password for privilege escalation.\n\nRemove any occurrences of \" pam_succeed_if \" in the \"/etc/pam.d/sudo\" file.","ccis":["CCI-002038"]},{"vulnId":"V-281207","ruleId":"SV-281207r1166573_rule","severity":"medium","ruleTitle":"RHEL 10 must restrict privilege elevation to authorized personnel.","description":"If the \"sudoers\" file is not configured correctly, any user defined on the system can initiate privileged actions on the target system.","checkContent":"Verify RHEL 10 restricts privilege elevation to authorized personnel with the following command:\n\n$ sudo grep -riw ALL /etc/sudoers /etc/sudoers.d/ | grep -v \"#\"\n\nIf the either of the following entries is returned, this is a finding:\n\nALL     ALL=(ALL) ALL\nALL     ALL=(ALL:ALL) ALL","fixText":"Configure RHEL 10 to restrict privilege elevation to authorized personnel.\n\nRemove the following entries from the \"/etc/sudoers\" file or configuration file under \"/etc/sudoers.d/\":\n\nALL     ALL=(ALL) ALL\nALL     ALL=(ALL:ALL) ALL","ccis":["CCI-002696"]},{"vulnId":"V-281208","ruleId":"SV-281208r1166576_rule","severity":"medium","ruleTitle":"RHEL 10 must require users to reauthenticate for privilege escalation.","description":"Without reauthentication, users may access resources or perform tasks for which they do not have authorization.\n\nWhen operating systems provide the capability to escalate a functional capability, it is critical that the user reauthenticate.\n\nSatisfies: SRG-OS-000373-GPOS-00156, SRG-OS-000373-GPOS-00157, SRG-OS-000373-GPOS-00158","checkContent":"Verify RHEL 10 \"/etc/sudoers\" has no occurrences of \"!authenticate\" with the following command:\n\n$ sudo grep -ir '!authenticate' /etc/sudoers /etc/sudoers.d/\n\nIf any occurrences of \"!authenticate\" are returned, this is a finding.","fixText":"Configure RHEL 10 to not allow users to execute privileged actions without authenticating.\n\nRemove any occurrence of \"!authenticate\" found in the \"/etc/sudoers\" file or files in the \"/etc/sudoers.d\" directory:\n\n$ sudo sed -i '/\\!authenticate/ s/^/# /g' /etc/sudoers /etc/sudoers.d/*","ccis":["CCI-002038"]},{"vulnId":"V-281209","ruleId":"SV-281209r1166579_rule","severity":"medium","ruleTitle":"RHEL 10 must require reauthentication when using the \"sudo\" command.","description":"Without reauthentication, users may access resources or perform tasks for which they do not have authorization.\n\nWhen operating systems provide the capability to escalate a functional capability, it is critical that the organization requires the user to reauthenticate when using the \"sudo\" command.\n\nIf the value is set to an integer less than \"0\", the user's time stamp will not expire, and the user will not have to reauthenticate for privileged actions until the user's session is terminated.\n\nSatisfies: SRG-OS-000373-GPOS-00156, SRG-OS-000373-GPOS-00157, SRG-OS-000373-GPOS-00158","checkContent":"Verify RHEL 10 requires reauthentication when using the \"sudo\" command to elevate privileges with the following command:\n\n$ sudo grep -ir 'timestamp_timeout' /etc/sudoers /etc/sudoers.d/\n/etc/sudoers:Defaults timestamp_timeout=0\n\nIf results are returned from more than one file location, this is a finding.\n\nIf \"timestamp_timeout\" is set to a negative number, is commented out, or no results are returned, this is a finding.","fixText":"Configure RHEL 10 to reauthenticate \"sudo\" commands after the specified timeout.\n\nAdd the following line to \"/etc/sudoers\" or a file in \"/etc/sudoers.d\":\n\nDefaults timestamp_timeout=0","ccis":["CCI-002038"]},{"vulnId":"V-281210","ruleId":"SV-281210r1166582_rule","severity":"medium","ruleTitle":"RHEL 10 must use the invoking user's password for privilege escalation when using \"sudo\".","description":"If the \"rootpw\", \"targetpw\", or \"runaspw\" flags are defined and not disabled, by default the operating system will prompt the invoking user for the \"root\" user password.","checkContent":"Verify RHEL 10 sudoers security policy is configured to use the invoking user's password for privilege escalation with the following command:\n\n$ sudo grep -irE '(!rootpw|!targetpw|!runaspw)' /etc/sudoers /etc/sudoers.d/ | grep -v '#'\n/etc/sudoers:Defaults !targetpw\n/etc/sudoers:Defaults !rootpw\n/etc/sudoers:Defaults !runaspw\n\nIf no results are returned, this is a finding.\n\nIf results are returned from more than one file location, this is a finding.\n\nIf \"Defaults !targetpw\" is not defined, this is a finding.\n\nIf \"Defaults !rootpw\" is not defined, this is a finding.\n\nIf \"Defaults !runaspw\" is not defined, this is a finding.","fixText":"Configure RHEL 10 to use the invoking user's password for privilege escalation when using \"sudo\".\n\nDefine the following in the Defaults section of the /etc/sudoers file or a single configuration file in the /etc/sudoers.d/ directory:\n\nDefaults !targetpw\nDefaults !rootpw\nDefaults !runaspw","ccis":["CCI-002038"]},{"vulnId":"V-281211","ruleId":"SV-281211r1166585_rule","severity":"high","ruleTitle":"RHEL 10 must require users to provide a password for privilege escalation.","description":"Without reauthentication, users may access resources or perform tasks for which they do not have authorization.\n\nWhen operating systems provide the capability to escalate a functional capability, it is critical that the user reauthenticate.\n\nSatisfies: SRG-OS-000373-GPOS-00156, SRG-OS-000373-GPOS-00157, SRG-OS-000373-GPOS-00158","checkContent":"Verify RHEL 10 has no occurrences of \"NOPASSWD\" in \"/etc/sudoers\" with the following command:\n\n$ sudo grep -ir nopasswd /etc/sudoers /etc/sudoers.d/ | grep -v '#'\n\nIf any occurrences of \"NOPASSWD\" are returned from the command and have not been documented with the information system security officer as an organizationally defined administrative group using multifactor authentication, this is a finding.","fixText":"Configure RHEL 10 to not allow users to execute privileged actions without authenticating with a password.\n\nRemove any occurrence of \"NOPASSWD\" found in the \"/etc/sudoers\" file or files in the \"/etc/sudoers.d\" directory:\n\n$ sudo find /etc/sudoers /etc/sudoers.d -type f -exec sed -i '/NOPASSWD/ s/^/# /g' {} \\;","ccis":["CCI-002038"]},{"vulnId":"V-281212","ruleId":"SV-281212r1166588_rule","severity":"medium","ruleTitle":"RHEL 10 must configure the use of the pam_faillock.so module in the \"/etc/pam.d/system-auth\" file.","description":"If the pam_faillock.so module is not loaded, the system will not correctly lock out accounts to prevent password guessing attacks.","checkContent":"Verify RHEL 10 includes the use of the pam_faillock.so module in the \"/etc/pam.d/system-auth\" file:\n\n$ sudo grep pam_faillock.so /etc/pam.d/system-auth\nauth required pam_faillock.so preauth\nauth required pam_faillock.so authfail\naccount required pam_faillock.so\n\nIf 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.\n\nIf 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.","fixText":"Configure RHEL 10 to include the use of the pam_faillock.so module in the \"/etc/pam.d/system-auth\" file.\n\nIf PAM is managed with authselect, enable the feature with the following command:\n\n$ sudo authselect enable-feature with-faillock\n\nOtherwise, add/modify the appropriate sections of the \"/etc/pam.d/system-auth\" file to match the following lines:\n\nNote: The \"preauth\" line must be listed before pam_unix.so.\n\nauth required pam_faillock.so preauth\nauth required pam_faillock.so authfail\naccount required pam_faillock.so","ccis":["CCI-000044"]},{"vulnId":"V-281213","ruleId":"SV-281213r1166591_rule","severity":"medium","ruleTitle":"RHEL 10 must configure the use of the pam_faillock.so module in the \"/etc/pam.d/password-auth\" file.","description":"If the pam_faillock.so module is not loaded, the system will not correctly lock out accounts to prevent password guessing attacks.","checkContent":"Verify RHEL 10 includes the pam_faillock.so module in the \"/etc/pam.d/password-auth\" file:\n\n$ sudo grep pam_faillock.so /etc/pam.d/password-auth\nauth required pam_faillock.so preauth\nauth required pam_faillock.so authfail\naccount required pam_faillock.so\n\nIf 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.\n\nIf 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.","fixText":"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:\n\n$ sudo authselect enable-feature with-faillock\n\nOtherwise, add/modify the appropriate sections of the \"/etc/pam.d/password-auth\" file to match the following lines:\n\nNote: The \"preauth\" line must be listed before pam_unix.so.\n\nauth required pam_faillock.so preauth\nauth required pam_faillock.so authfail\naccount required pam_faillock.so","ccis":["CCI-000044"]},{"vulnId":"V-281214","ruleId":"SV-281214r1166594_rule","severity":"medium","ruleTitle":"RHEL 10 must ensure the password complexity module is enabled in the \"password-auth\" file.","description":"Enabling Pluggable Authentication Module (PAM) password complexity permits enforcement of strong passwords and consequently makes the system less prone to dictionary attacks.\n\nSatisfies: SRG-OS-000069-GPOS-00037, SRG-OS-000070-GPOS-00038","checkContent":"Verify RHEL 10 uses \"pwquality\" to enforce the password complexity rules in the \"password-auth\" file with the following command:\n\n$ sudo grep pam_pwquality /etc/pam.d/password-auth\npassword required pam_pwquality.so\n\nIf the command does not return a line containing the value \"pam_pwquality.so\", or the line is commented out, this is a finding.\n\nIf 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.","fixText":"Configure RHEL 10 to use \"pwquality\" to enforce password complexity rules.\n\nAdd the following line to the \"/etc/pam.d/password-auth\" file (or modify the line to have the required value):\n\npassword required pam_pwquality.so","ccis":["CCI-004066"]},{"vulnId":"V-281215","ruleId":"SV-281215r1166597_rule","severity":"medium","ruleTitle":"RHEL 10 must ensure the password complexity module is enabled in the \"system-auth\" file.","description":"Enabling Pluggable Authentication Module (PAM) password complexity permits enforcement of strong passwords and consequently makes the system less prone to dictionary attacks.","checkContent":"Verify RHEL 10 uses \"pwquality\" to enforce the password complexity rules in the \"system-auth\" file with the following command:\n\n$ sudo grep pam_pwquality /etc/pam.d/system-auth\npassword required pam_pwquality.so\n\nIf the command does not return a line containing the value \"pam_pwquality.so\", or the line is commented out, this is a finding.\n\nIf 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.","fixText":"Configure RHEL 10 to use \"pwquality\" to enforce password complexity rules.\n\nAdd the following line to the \"/etc/pam.d/system-auth\" file (or modify the line to have the required value):\n\npassword required pam_pwquality.so","ccis":["CCI-004066"]},{"vulnId":"V-281216","ruleId":"SV-281216r1166600_rule","severity":"high","ruleTitle":"RHEL 10 must enable the Pluggable Authentication Module (PAM) interface for SSHD.","description":"When \"UsePAM\" is set to \"yes\", PAM runs through account and session types properly. This is important when restricted access to services based on IP, time, or other factors of the account is needed. Additionally, this ensures users can inherit certain environment variables on login or disallow access to the server.","checkContent":"Verify RHEL 10 SSHD is configured to allow for the \"UsePAM\" interface with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*usepam'\nUsePAM yes\n\nIf the \"UsePAM\" keyword is set to \"no\", is missing, or is commented out, this is a finding.","fixText":"Configure RHEL 10 SSHD to use the \"UsePAM\" interface by adding or modifying the following line in \"/etc/ssh/sshd_config\" or in a file in \"/etc/ssh/sshd_config.d\".\n\nUsePAM yes\n\nRestart the SSH daemon with the following command for the settings to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-000877"]},{"vulnId":"V-281217","ruleId":"SV-281217r1195450_rule","severity":"medium","ruleTitle":"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.","description":"Unapproved mechanisms that are used for authentication to the cryptographic module are not verified; therefore, they cannot be relied on to provide confidentiality or integrity, and DOD data may be compromised.\n\nRHEL 10 systems using encryption are required to use FIPS-compliant mechanisms for authenticating to cryptographic modules.\n\nFIPS 140-3 is the current standard for validating that mechanisms used to access cryptographic modules use authentication that meets DOD requirements. This allows for Security Levels 1, 2, 3, or 4 for use on a general-purpose computing system.\n\nSatisfies: SRG-OS-000073-GPOS-00041, SRG-OS-000120-GPOS-00061","checkContent":"Verify RHEL 10 configures the pam_unix.so module to use sha512 in \"/etc/pam.d/password-auth\" with the following command:\n\n$ sudo grep \"^password.*pam_unix.so.*sha512\" /etc/pam.d/password-auth\npassword sufficient pam_unix.so sha512\n\nIf \"sha512\" is missing, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to use the sha512 cryptographic hashing algorithm for local account passwords.\n\nEdit/modify the following line in the \"/etc/pam.d/password-auth\" file to include the sha512 option for pam_unix.so:\n\npassword sufficient pam_unix.so sha512","ccis":["CCI-004062","CCI-000803"]},{"vulnId":"V-281218","ruleId":"SV-281218r1166606_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured to use a sufficient number of hashing rounds for the shadow password suite.","description":"Passwords must be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised. Passwords that are encrypted with a weak algorithm are no more protected than if they are kept in plain text.\n\nUsing more hashing rounds makes password cracking attacks more difficult.\n\nSatisfies: SRG-OS-000073-GPOS-00041, SRG-OS-000120-GPOS-00061","checkContent":"Verify RHEL 10 uses a sufficient number of rounds for the shadow password suite hashing algorithm with the following command:\n\n$ sudo grep rounds /etc/pam.d/system-auth\npassword sufficient pam_unix.so sha512 rounds=100000\n\nIf the setting is not configured or \"rounds\" is less than 100000, this a finding.","fixText":"Configure RHEL 10 to use a sufficient number of hashing rounds for shadow password suite.\n\nAdd or modify the following line in \"/etc/pam.d/system-auth\" and set \"rounds\" to 100000:\n\npassword sufficient pam_unix.so sha512 rounds=100000","ccis":["CCI-004062","CCI-000803"]},{"vulnId":"V-281219","ruleId":"SV-281219r1166609_rule","severity":"medium","ruleTitle":"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.","description":"Unapproved mechanisms that are used for authentication to the cryptographic module are not verified and therefore cannot be relied on to provide confidentiality or integrity, and DOD data may be compromised.\n\nRHEL 10 systems using encryption are required to use FIPS-compliant mechanisms for authenticating to cryptographic modules.\n\nFIPS 140-3 is the current standard for validating that mechanisms used to access cryptographic modules use authentication that meets DOD requirements. This allows for Security Levels 1, 2, 3, or 4 for use on a general-purpose computing system.\n\nSatisfies: SRG-OS-000073-GPOS-00041, SRG-OS-000120-GPOS-00061","checkContent":"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:\n\n$ sudo grep \"^password.*pam_unix.so.*sha512\" /etc/pam.d/system-auth\npassword sufficient pam_unix.so sha512\n\nIf \"sha512\" is missing, or the line is commented out, this is a finding.","fixText":"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.\n\nEdit/modify the following line in the \"/etc/pam.d/system-auth\" file to include the sha512 option for pam_unix.so:\n\npassword sufficient pam_unix.so sha512","ccis":["CCI-004062","CCI-000803"]},{"vulnId":"V-281220","ruleId":"SV-281220r1166612_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that password-auth uses a sufficient number of hashing rounds.","description":"Passwords must be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised. Passwords that are encrypted with a weak algorithm are no more protected than if they are kept in plain text.\n\nUsing more hashing rounds makes password cracking attacks more difficult.\n\nSatisfies: SRG-OS-000073-GPOS-00041, SRG-OS-000120-GPOS-00061","checkContent":"Verify RHEL 10 is configured to use a sufficient number of rounds for password hashing with the following command:\n\n$ sudo grep rounds /etc/pam.d/password-auth\npassword sufficient pam_unix.so sha512 rounds=100000\n\nIf the setting is not configured or \"rounds\" is less than \"100000\", this a finding.","fixText":"Configure RHEL 10 to use \"100000\" hashing rounds for hashing passwords.\n\nAdd or modify the following line in \"/etc/pam.d/password-auth\" and set \"rounds\" to \"100000\":\n\npassword sufficient pam_unix.so sha512 rounds=100000","ccis":["CCI-004062","CCI-000803"]},{"vulnId":"V-281221","ruleId":"SV-281221r1166615_rule","severity":"high","ruleTitle":"RHEL 10 must employ FIPS 140-3-approved cryptographic hashing algorithms for all stored passwords.","description":"The system must use a strong hashing algorithm to store the password.\n\nPasswords must be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised.\n\nSatisfies: SRG-OS-000073-GPOS-00041, SRG-OS-000120-GPOS-00061","checkContent":"Verify RHEL 10 employs FIPS 140-3-approved cryptographic hashing algorithms for all stored passwords for interactive user accounts with the following command:\n\n$ sudo cut -d: -f2 /etc/shadow\n$6$kcOnRq/5$NUEYPuyL.wghQwWssXRcLRFiiru7f5JPV6GaJhNC2aK5F3PZpE/BCCtwrxRc/AInKMNX3CdMw11m9STiql12f/\n\nPassword hashes \"!\" or \"*\" indicate inactive accounts not available for login and are not evaluated.\n\nIf any interactive user password hash does not begin with \"$6\", this is a finding.","fixText":"Configure RHEL 10 to employ FIPS 140-3-approved cryptographic hashing algorithms for all stored passwords.\n\nLock all interactive user accounts not using SHA-512 hashing until the passwords can be regenerated with SHA-512.","ccis":["CCI-004062","CCI-000803"]},{"vulnId":"V-281222","ruleId":"SV-281222r1184626_rule","severity":"high","ruleTitle":"RHEL 10 must be configured to use the shadow file to store only encrypted representations of passwords.","description":"Passwords must be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised. Passwords that are encrypted with a weak algorithm are no more protected than if they are kept in plain text.\n\nThis setting ensures user and group account administration utilities are configured to store only encrypted representations of passwords. Additionally, the \"crypt_style\" configuration option ensures the use of a strong hashing algorithm that makes password cracking attacks more difficult.","checkContent":"Verify RHEL 10 is configured so that the shadow file stores only encrypted representations of passwords with a hash value of SHA512 with the following command:\n\n$ sudo grep -i encrypt_method /etc/login.defs\nENCRYPT_METHOD SHA512\n\nIf \"ENCRYPT_METHOD\" does not have a value of \"SHA512\", or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to store only SHA512 encrypted representations of passwords.\n\nAdd or update the following line in the \"/etc/login.defs\" file:\n\nENCRYPT_METHOD SHA512","ccis":["CCI-004062"]},{"vulnId":"V-281223","ruleId":"SV-281223r1166621_rule","severity":"high","ruleTitle":"RHEL 10 must be configured so that user and group account administration utilities are configured to store only encrypted representations of passwords.","description":"Passwords must be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised. Passwords that are encrypted with a weak algorithm are no more protected than if they are kept in plain text.\n\nThis setting ensures user and group account administration utilities are configured to store only encrypted representations of passwords. Additionally, the \"crypt_style\" configuration option ensures the use of a strong hashing algorithm that makes password cracking attacks more difficult.","checkContent":"Verify RHEL 10 user and group account administration utilities are configured to store only encrypted representations of passwords with the following command:\n\n$ sudo grep crypt /etc/libuser.conf\ncrypt_style = sha512\n\nIf the \"crypt_style\" variable is not set to \"yescrypt\", is not in the defaults section, is commented out, or does not exist, this is a finding.","fixText":"Configure RHEL 10 to use the SHA-512 algorithm for password hashing.\n\nAdd or change the following line in the \"[default]\" section of the \"/etc/libuser.conf\" file:\n\ncrypt_style = sha512","ccis":["CCI-004062"]},{"vulnId":"V-281224","ruleId":"SV-281224r1184753_rule","severity":"medium","ruleTitle":"RHEL 10 must display the Standard Mandatory DOD Notice and Consent Banner before granting local or remote access to the system via a Secure Shell (SSH) login.","description":"The warning message reinforces policy awareness during the login process and facilitates possible legal action against attackers. Alternatively, systems whose ownership should not be obvious should ensure use of a banner that does not provide easy attribution.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.","checkContent":"Verify RHEL 10 is configured so that any SSH connection to the operating system displays the Standard Mandatory DOD Notice and Consent Banner before granting access to the system.\n\nCheck for the location of the banner file currently being used with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*banner'\n/etc/ssh/sshd_config.d/10-stig.conf:Banner /etc/issue\n\nIf the line is commented out or the file is missing, this is a finding.","fixText":"Configure RHEL 10 to display the Standard Mandatory DOD Notice and Consent Banner before granting access to the system via SSH.\n\nEdit 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).\n\nAn example configuration line is:\n\nBanner /etc/issue","ccis":["CCI-000213"]},{"vulnId":"V-281225","ruleId":"SV-281225r1166627_rule","severity":"medium","ruleTitle":"RHEL 10 must display the Standard Mandatory DOD Notice and Consent Banner before granting local or remote access to the system via a graphical user login.","description":"Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance.\n\nSystem use notifications are required only for access via login interfaces with human users and are not required when such human interfaces do not exist.\n\nThe banner must be formatted in accordance with applicable DOD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters:\n\n\"You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\n\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n\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\n-At any time, the USG may inspect and seize data stored on this IS.\n\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\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n\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.\"\n\nSatisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000228-GPOS-00088","checkContent":"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.\n\nVerify RHEL 10 displays the Standard Mandatory DOD Notice and Consent Banner before granting access to the operating system via a graphical user login with the following command:\n\n$ gsettings get org.gnome.login-screen banner-message-text\nbanner-message-text=\n'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. '\n\nNote: The \"\\n \" characters are for formatting only. They will not be displayed on the graphical interface.\n\nIf the banner does not match the Standard Mandatory DOD Notice and Consent Banner exactly, this is a finding.","fixText":"Configure RHEL 10 to display the Standard Mandatory DOD Notice and Consent Banner before granting access to the system.\n\nAdd the following lines to the [org/gnome/login-screen] section of the \"/etc/dconf/db/local.d/01-banner-message\":\n\nbanner-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. '\n\nNote: The \"\\n \" characters are for formatting only. They will not be displayed on the graphical interface.\n\nRun the following command to update the database:\n\n$ sudo dconf update","ccis":["CCI-000048","CCI-001384","CCI-001385","CCI-001386","CCI-001387","CCI-001388"]},{"vulnId":"V-281226","ruleId":"SV-281226r1166630_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent a user from overriding the banner-message-enable setting for the graphical user interface.","description":"Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance.\n\nFor U.S. Government systems, system use notifications are required only for access via login interfaces with human users and are not required when such human interfaces do not exist.\n\nSatisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000228-GPOS-00088","checkContent":"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.\n\nVerify RHEL 10 prevents a user from overriding settings for graphical user interfaces with the following command:\n\n$ gsettings writable org.gnome.login-screen banner-message-enable\nfalse\n\nIf \"banner-message-enable\" is writable, or the result is \"true\", this is a finding.","fixText":"Configure RHEL 10 to prevent a user from overriding the banner setting for graphical user interfaces.\n\nCreate a database to contain the systemwide graphical user login settings (if it does not already exist) with the following command:\n\n$ sudo vi /etc/dconf/db/local.d/locks/session\n\nAdd the following setting to prevent nonprivileged users from modifying it:\n\n/org/gnome/login-screen/banner-message-enable\n\nRun the following command to update the database:\n\n$ sudo dconf update","ccis":["CCI-000048","CCI-001384","CCI-001385","CCI-001386","CCI-001387","CCI-001388"]},{"vulnId":"V-281227","ruleId":"SV-281227r1184627_rule","severity":"medium","ruleTitle":"RHEL 10 must display the Standard Mandatory DOD Notice and Consent Banner before granting local or remote access to the system via a command line user login.","description":"Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance.\n\nSystem use notifications are required only for access via login interfaces with human users and are not required when such human interfaces do not exist.\n\nSatisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000228-GPOS-00088","checkContent":"Verify RHEL 10 displays the Standard Mandatory DOD Notice and Consent Banner before granting access to the operating system via a command line login screen with the following command:\n\n$ cat /etc/issue\n\nIf the banner is set correctly, it will return the following text:\n\n\"You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\n\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n\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\n-At any time, the USG may inspect and seize data stored on this IS.\n\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\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n\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.\"\n\nIf the banner text does not match the Standard Mandatory DOD Notice and Consent Banner exactly, or the line is commented out, this is a finding.","fixText":"Configure RHEL 10 to display the Standard Mandatory DOD Notice and Consent Banner before granting access to the system via command line login.\n\nEdit the \"/etc/issue\" file to replace the default text with the Standard Mandatory DOD Notice and Consent Banner. The DOD-required text is:\n\n\"You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\n\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n\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\n-At any time, the USG may inspect and seize data stored on this IS.\n\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\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests -- not for your personal benefit or privacy.\n\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.\"","ccis":["CCI-000048","CCI-001384","CCI-001385","CCI-001386","CCI-001387","CCI-001388"]},{"vulnId":"V-281228","ruleId":"SV-281228r1166636_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent special devices on file systems that are imported via Network File System (NFS).","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Note: If no NFS mounts are configured, this requirement is not applicable.\n\nVerify RHEL 10 has the \"nodev\" option configured for all NFS mounts with the following command:\n\n$ sudo grep nfs /etc/fstab\n192.168.22.2:/mnt/export /data nfs4 rw,nosuid,nodev,noexec,sync,soft,sec=krb5:krb5i:krb5p\n\nIf the system is mounting file systems via NFS and the \"nodev\" option is missing, this is a finding.","fixText":"Configure RHEL 10 to prevent special devices on file systems that are imported via NFS.\n\nUpdate each NFS mounted file system to use the \"nodev\" option on file systems that are being imported via NFS.","ccis":["CCI-000213"]},{"vulnId":"V-281229","ruleId":"SV-281229r1166639_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent code from being executed on file systems that are imported via Network File System (NFS).","description":"The \"noexec\" mount option causes the system not to execute binary files. This option must be used for mounting any file system not containing approved binary as they may be incompatible. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Note: If no NFS mounts are configured, this requirement is not applicable.\n\nVerify RHEL 10 has the \"noexec\" option configured for all NFS mounts with the following command:\n\n$ sudo grep nfs /etc/fstab\n192.168.22.2:/mnt/export /data nfs4 rw,nosuid,nodev,noexec,sync,soft,sec=krb5:krb5i:krb5p\n\nIf the system is mounting file systems via NFS and the \"noexec\" option is missing, this is a finding.","fixText":"Configure RHEL 10 to prevent code from being executed on file systems that are imported via NFS.\n\nUpdate each NFS mounted file system to use the \"noexec\" option on file systems that are being imported via NFS.","ccis":["CCI-000213"]},{"vulnId":"V-281230","ruleId":"SV-281230r1166642_rule","severity":"medium","ruleTitle":"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).","description":"The \"nosuid\" mount option causes the system not to execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Note: If no NFS mounts are configured, this requirement is not applicable.\n\nVerify RHEL 10 has the \"nosuid\" option configured for all NFS mounts with the following command:\n\n$ sudo grep nfs /etc/fstab\n192.168.22.2:/mnt/export /data nfs4 rw,nosuid,nodev,noexec,sync,soft,sec=krb5:krb5i:krb5p\n\nIf the system is mounting file systems via NFS and the \"nosuid\" option is missing, this is a finding.","fixText":"Configure RHEL 10 to prevent files with the \"setuid\" and \"setgid\" bit set from being executed on file systems that are imported via NFS.\n\nUpdate each NFS mounted file system to use the \"nosuid\" option on file systems that are being imported via NFS.","ccis":["CCI-000213"]},{"vulnId":"V-281231","ruleId":"SV-281231r1166645_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the Network File System (NFS) is configured to use RPCSEC_GSS.","description":"When an NFS server is configured to use RPCSEC_SYS, a selected userid and groupid are used to handle requests from the remote user. The userid and groupid could mistakenly or maliciously be set incorrectly. The RPCSEC_GSS method of authentication uses certificates on the server and client systems to more securely authenticate the remote mount request.","checkContent":"Note: If no NFS mounts are configured, this requirement is not applicable.\n\nVerify RHEL 10 has the \"sec\" option configured for all NFS mounts with the following command:\n\n$ sudo grep nfs /etc/fstab\n192.168.22.2:/mnt/export /data nfs4 rw,nosuid,nodev,noexec,sync,soft,sec=krb5p:krb5i:krb5\n\nIf 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.","fixText":"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.\n\nEnsure the \"sec\" option is defined as \"krb5p:krb5i:krb5\".","ccis":["CCI-000213"]},{"vulnId":"V-281232","ruleId":"SV-281232r1166648_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/boot\" with the \"nodev\" option.","description":"The only legitimate location for device files is the \"/dev\" directory located on the root partition. The only exception to this is chroot jails.","checkContent":"Verify RHEL 10 is configured so that the \"/boot\" mount point has the \"nodev\" option with the following command:\n\n$ mount | grep '\\s/boot\\s'\n/dev/sda1 on /boot type xfs (rw,nodev,nosuid,relatime,seclabel,attr2)\n\nIf the \"/boot\" file system does not have the \"nodev\" option set, this is a finding.","fixText":"Configure RHEL 10 to mount \"/boot\" with the \"nodev\" option.\n\nModify \"/etc/fstab\" to use the \"nodev\" option on the \"/boot\" directory.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /boot","ccis":["CCI-001764"]},{"vulnId":"V-281233","ruleId":"SV-281233r1166651_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent files with the \"setuid\" and \"setgid\" bit set from being executed on the \"/boot\" directory.","description":"The \"nosuid\" mount option causes the system not to execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify RHEL 10 is configured so that the \"/boot\" directory is mounted with the \"nosuid\" option with the following command:\n\n$ mount | grep '\\s/boot\\s'\n/dev/sda1 on /boot type xfs (rw,nodev,nosuid,relatime,seclabel,attr2)\n\nIf the \"/boot\" file system does not have the \"nosuid\" option set, this is a finding.","fixText":"Configure RHEL 10 to prevent files with the \"setuid\" and \"setgid\" bit set from being executed on the \"/boot\" directory.\n\nModify \"/etc/fstab\" to use the \"nosuid\" option on the \"/boot\" directory.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /boot","ccis":["CCI-001764"]},{"vulnId":"V-281234","ruleId":"SV-281234r1166654_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent files with the \"setuid\" and \"setgid\" bit set from being executed on the \"/boot/efi\" directory.","description":"The \"nosuid\" mount option causes the system not to execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Note: For systems that use BIOS and for vfat systems, this requirement is not applicable.\n\nVerify RHEL 10 is configured so that the \"/boot/efi \"directory is mounted with the \"nosuid\" option with the following command:\n\n$ mount | grep '\\s/boot/efi\\s'\n/dev/sda1 on /boot/efi type vfat (rw,nosuid,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro)\n\nIf the \"/boot/efi\" file system does not have the \"nosuid\" option set, this is a finding.","fixText":"Configure RHEL 10 to prevent files with the \"setuid\" and \"setgid\" bit set from being executed on the \"/boot/efi\" directory.\n\nModify \"/etc/fstab\" to use the \"nosuid\" option on the \"/boot/efi\" directory.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /boot/efi","ccis":["CCI-000213"]},{"vulnId":"V-281235","ruleId":"SV-281235r1166657_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/dev/shm\" with the \"nodev\" option.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify RHEL 10 is configured so that \"/dev/shm\" is mounted with the \"nodev\" option with the following command:\n\n$ mount | grep /dev/shm\ntmpfs on /dev/shm type tmpfs (rw,nodev,nosuid,noexec,seclabel)\n\nIf the \"/dev/shm\" file system is mounted without the \"nodev\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/dev/shm\" with the \"nodev\" option.\n\nModify \"/etc/fstab\" to use the \"nodev\" option on the \"/dev/shm\" file system.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /dev/shm","ccis":["CCI-001764"]},{"vulnId":"V-281236","ruleId":"SV-281236r1166660_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/dev/shm\" with the \"noexec\" option.","description":"The \"noexec\" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify RHEL 10 is configured so that \"/dev/shm\" is mounted with the \"noexec\" option with the following command:\n\n$ mount | grep /dev/shm\ntmpfs on /dev/shm type tmpfs (rw,nodev,nosuid,noexec,seclabel)\n\nIf the \"/dev/shm\" file system is mounted without the \"noexec\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/dev/shm\" with the \"noexec\" option.\n\nModify \"/etc/fstab\" to use the \"noexec\" option on the \"/dev/shm\" file system.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /dev/shm","ccis":["CCI-001764"]},{"vulnId":"V-281237","ruleId":"SV-281237r1166663_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/dev/shm\" with the \"nosuid\" option.","description":"The \"nosuid\" mount option causes the system to not execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify RHEL 10 is configured so that \"/dev/shm\" is mounted with the \"nosuid\" option with the following command:\n\n$ mount | grep /dev/shm\ntmpfs on /dev/shm type tmpfs (rw,nodev,nosuid,noexec,seclabel)\n\nIf the \"/dev/shm\" file system is mounted without the \"nosuid\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/dev/shm\" with the \"nosuid\" option.\n\nModify \"/etc/fstab\" to use the \"nosuid\" option on the \"/dev/shm\" file system.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /dev/shm","ccis":["CCI-001764"]},{"vulnId":"V-281238","ruleId":"SV-281238r1166666_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/tmp\" with the \"nodev\" option.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify RHEL 10 is configured so that \"/tmp\" is mounted with the \"nodev\" option:\n\n$ mount | grep /tmp\n/dev/mapper/luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2)\n\nIf the \"/tmp\" file system is mounted without the \"nodev\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/tmp\" with the \"nodev\" option.\n\nModify \"/etc/fstab\" to use the \"nodev\" option on the \"/tmp\" directory.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /tmp","ccis":["CCI-001764"]},{"vulnId":"V-281239","ruleId":"SV-281239r1166669_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/tmp\" with the \"noexec\" option.","description":"The \"noexec\" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify RHEL 10 is configured so that \"/tmp\" is mounted with the \"noexec\" option:\n\n$ mount | grep /tmp\n/dev/mapper/luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2)\n\nIf the \"/tmp\" file system is mounted without the \"noexec\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/tmp\" with the \"noexec\" option.\n\nModify \"/etc/fstab\" to use the \"noexec\" option on the \"/tmp\" directory.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /tmp","ccis":["CCI-001764"]},{"vulnId":"V-281240","ruleId":"SV-281240r1166672_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/tmp\" with the \"nosuid\" option.","description":"The \"nosuid\" mount option causes the system to not execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify RHEL 10 is configured so that \"/tmp\" is mounted with the \"nosuid\" option:\n\n$ mount | grep /tmp\n/dev/mapper/luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2)\n\nIf the \"/tmp\" file system is mounted without the \"nosuid\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/tmp\" with the \"nosuid\" option.\n\nModify \"/etc/fstab\" to use the \"nosuid\" option on the \"/tmp\" directory.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /tmp","ccis":["CCI-001764"]},{"vulnId":"V-281241","ruleId":"SV-281241r1166675_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/var\" with the \"nodev\" option.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify RHEL 10 is configured so that \"/var\" is mounted with the \"nodev\" option:\n\n$ mount | grep /var\n/dev/mapper/luks-51150299-f295-4145-b8f0-ebe9c6dfd5a0 on /var type xfs (rw,nodev,relatime,seclabel,attr2)\n\nIf the \"/var\" file system is mounted without the \"nodev\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/var\" with the \"nodev\" option.\n\nModify \"/etc/fstab\" to use the \"nodev\" option on the \"/var\" directory.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /var","ccis":["CCI-001764"]},{"vulnId":"V-281242","ruleId":"SV-281242r1166678_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/var/log\" with the \"nodev\" option.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify RHEL 10 is configured so that \"/var/log\" is mounted with the \"nodev\" option:\n\n$ mount | grep /var/log\n/dev/mapper/luks-c651f493-9fdc-4c6e-a711-0a4f03149661 on /var/log type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2)\n\nIf the \"/var/log\" file system is mounted without the \"nodev\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/var/log\" with the \"nodev\" option.\n\nModify \"/etc/fstab\" to use the \"nodev\" option on the \"/var/log\" directory.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /var/log","ccis":["CCI-001764"]},{"vulnId":"V-281243","ruleId":"SV-281243r1166681_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/var/log\" with the \"noexec\" option.","description":"The \"noexec\" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify RHEL 10 is configured so that \"/var/log\" is mounted with the \"noexec\" option:\n\n$ mount | grep /var/log\n/dev/mapper/luks-c651f493-9fdc-4c6e-a711-0a4f03149661 on /var/log type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2)\n\nIf the \"/var/log\" file system is mounted without the \"noexec\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/var/log\" with the \"noexec\" option.\n\nModify \"/etc/fstab\" to use the \"noexec\" option on the \"/var/log\" directory.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /var/log","ccis":["CCI-001764"]},{"vulnId":"V-281244","ruleId":"SV-281244r1166684_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/var/log\" with the \"nosuid\" option.","description":"The \"nosuid\" mount option causes the system to not execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify RHEL 10 is configured so that \"/var/log\" is mounted with the \"nosuid\" option:\n\n$ mount | grep /var/log\n/dev/mapper/luks-c651f493-9fdc-4c6e-a711-0a4f03149661 on /var/log type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2)\n\nIf the \"/var/log\" file system is mounted without the \"nosuid\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/var/log\" with the \"nosuid\" option.\n\nModify \"/etc/fstab\" to use the \"nosuid\" option on the \"/var/log\" directory.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /var/log","ccis":["CCI-001764"]},{"vulnId":"V-281245","ruleId":"SV-281245r1166687_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/var/tmp\" with the \"nodev\" option.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify RHEL 10 is configured so that \"/var/tmp\" is mounted with the \"nodev\" option:\n\n$ mount | grep /var/tmp\n/dev/mapper/luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2)\n\nIf the \"/var/tmp\" file system is mounted without the \"nodev\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/var/tmp\" with the \"nodev\" option.\n\nModify \"/etc/fstab\" to use the \"nodev\" option on the \"/var/tmp\" directory.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /var/tmp","ccis":["CCI-001764"]},{"vulnId":"V-281246","ruleId":"SV-281246r1166690_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/var/tmp\" with the \"noexec\" option.","description":"The \"noexec\" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify RHEL 10 is configured so that \"/var/tmp\" is mounted with the \"noexec\" option:\n\n$ mount | grep /var/tmp\n/dev/mapper/luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2)\n\nIf the \"/var/tmp\" file system is mounted without the \"noexec\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/var/tmp\" with the \"noexec\" option.\n\nModify \"/etc/fstab\" to use the \"noexec\" option on the \"/var/tmp\" directory.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /var/tmp","ccis":["CCI-001764"]},{"vulnId":"V-281247","ruleId":"SV-281247r1166693_rule","severity":"medium","ruleTitle":"RHEL 10 must mount \"/var/tmp\" with the \"nosuid\" option.","description":"The \"nosuid\" mount option causes the system to not execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify RHEL 10 is configured so that \"/var/tmp\" is mounted with the \"nosuid\" option:\n\n$ mount | grep /var/tmp\n/dev/mapper/luks-c98555c8-0462-4b97-9afa-6db8c4bfee3b on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2)\n\nIf the \"/var/tmp\" file system is mounted without the \"nosuid\" option, this is a finding.","fixText":"Configure RHEL 10 to mount \"/var/tmp\" with the \"nosuid\" option.\n\nModify \"/etc/fstab\" to use the \"nosuid\" option on the \"/var/tmp\" directory.\n\nTo reload all implicit mount units and update the dependency graph so that new options will apply correctly at next remount, run the following command:\n\n$ sudo systemctl daemon-reload\n\nUse the following command to apply the changes immediately without a reboot:\n\n$ sudo mount -o remount /var/tmp","ccis":["CCI-001764"]},{"vulnId":"V-281248","ruleId":"SV-281248r1166696_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent special devices on nonroot local partitions.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify RHEL 10 is configured so that all nonroot local partitions are mounted with the \"nodev\" option with the following command:\n\n$ sudo mount | grep '^/dev\\S* on /\\S' | grep --invert-match 'nodev'\n\nIf any output is produced, this is a finding.","fixText":"Configure RHEL 10 so that \"/etc/fstab\" uses the \"nodev\" option on all nonroot local partitions.","ccis":["CCI-001764"]},{"vulnId":"V-281249","ruleId":"SV-281249r1197242_rule","severity":"medium","ruleTitle":"RHEL 10 must enable the SELinux targeted policy.","description":"Setting the SELinux policy to \"targeted\" or a more specialized policy ensures the system will confine processes that are likely to be targeted for exploitation, such as network or system services.\n\nNote: During the development or debugging of SELinux modules, it is common to temporarily place nonproduction systems in \"permissive\" mode. In such temporary cases, SELinux policies should be developed, and once work is completed, the system should be reconfigured to \"targeted\".","checkContent":"Verify RHEL 10 SELINUX is using the targeted policy with the following command:\n\n$ sestatus | grep policy\nLoaded policy name:             targeted\n\nIf the loaded policy name is not \"targeted\", this is a finding.","fixText":"Configure RHEL 10 to use the targeted SELINUX policy.\n\nEdit the file \"/etc/selinux/config\" and add or modify the following line:\n\nSELINUXTYPE=targeted\n\nA reboot is required for the changes to take effect.","ccis":["CCI-002696"]},{"vulnId":"V-281250","ruleId":"SV-281250r1184704_rule","severity":"medium","ruleTitle":"RHEL 10 must elevate the SELinux context when an administrator calls the sudo command.","description":"Without verification of the security functions, security functions may not operate correctly and the failure may go unnoticed. Security function is defined as the hardware, software, and/or firmware of the information system responsible for enforcing the system security policy and supporting the isolation of code and data on which the protection is based. \n\nSecurity functionality includes, but is not limited to, establishing system accounts, configuring access authorizations (i.e., permissions, privileges), setting events to be audited, and setting intrusion detection parameters.\n\nThis requirement applies to operating systems performing security function verification/testing and/or systems and environments that require this functionality.\n\nPreventing nonprivileged users from executing privileged functions mitigates the risk that unauthorized individuals or processes may gain unnecessary access to information or privileges.\n\nPrivileged functions include, for example, establishing accounts, performing system integrity checks, or administering cryptographic key management activities. Nonprivileged users are individuals who do not possess appropriate authorizations. Circumventing intrusion detection and prevention mechanisms or malicious code protection mechanisms are examples of privileged functions that require protection from nonprivileged users.","checkContent":"Verify RHEL 10 elevates the SELinux context when an administrator calls the sudo command with the following command:\n\nThis command must be run as root:\n\n$ sudo grep -r sysadm_r /etc/sudoers /etc/sudoers.d\n%{designated_group_or_user_name} ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL\n\nIf 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.","fixText":"Configure RHEL 10 to elevate the SELinux context when an administrator calls the sudo command.\n\nEdit a file in the \"/etc/sudoers.d\" directory with the following command:\n\n$ sudo visudo -f /etc/sudoers.d/ \n\nUse 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:\n\n%{designated_group_or_user_name} ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL\n\nRemove any configurations that conflict with the above from the following locations:\n\n/etc/sudoers\n/etc/sudoers.d/","ccis":["CCI-002235"]},{"vulnId":"V-281251","ruleId":"SV-281251r1166705_rule","severity":"medium","ruleTitle":"RHEL 10 must use a Linux Security Module configured to enforce limits on system services.","description":"Without verification of the security functions, security functions may not operate correctly and the failure may go unnoticed. Security function is defined as the hardware, software, and/or firmware of the information system responsible for enforcing the system security policy and supporting the isolation of code and data on which the protection is based. \n\nSecurity functionality includes, but is not limited to, establishing system accounts, configuring access authorizations (i.e., permissions, privileges), setting events to be audited, and setting intrusion detection parameters.\n\nThis requirement applies to operating systems performing security function verification/testing and/or systems and environments that require this functionality.\n\nSatisfies: SRG-OS-000445-GPOS-00199, SRG-OS-000134-GPOS-00068","checkContent":"Verify RHEL 10 enforces correct operation of security functions through the use of SELinux with the following command:\n\n$ getenforce\nEnforcing\n\nIf SELINUX is not set to \"Enforcing\", this is a finding.\n\nVerify SELinux is configured to be enforcing at boot.\n\n$ sudo grep \"SELINUX=\" /etc/selinux/config | grep -v '#'\nSELINUX=enforcing\n\nIf an uncommented SELinux line is missing or not set to \"enforcing\", this is a finding.","fixText":"Configure RHEL 10 to enforce correct operation of security functions.\n\nEdit the file \"/etc/selinux/config\" and add or modify the following line:\n\n SELINUX=enforcing\n\nA reboot is required for the changes to take effect.","ccis":["CCI-002696","CCI-001084"]},{"vulnId":"V-281252","ruleId":"SV-281252r1166708_rule","severity":"medium","ruleTitle":"RHEL 10 must configure SELinux context type to allow the use of a nondefault faillock tally directory.","description":"Not having the correct SELinux context on the faillock directory may lead to unauthorized access to the directory.","checkContent":"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.\n\nVerify RHEL 10 SELinux context type allows the use of a nondefault faillock tally directory.\n\nVerify the location of the nondefault tally directory for the pam_faillock module with the following command:\n\n$ sudo grep -w dir /etc/security/faillock.conf\ndir = /var/log/faillock\n\nCheck the security context type of the nondefault tally directory with the following command:\n\n$ ls -Zd /var/log/faillock\nunconfined_u:object_r:faillog_t:s0 /var/log/faillock\n\nIf the security context type of the nondefault tally directory is not \"faillog_t\", this is a finding.","fixText":"Configure RHEL 10 to allow the use of a nondefault faillock tally directory while SELinux enforces a targeted policy.\n\nEnable the feature using the following command:\n\n$ sudo authselect enable-feature with-faillock\n\nCreate a nondefault faillock tally directory (if it does not already exist) with the following example:\n\n$ sudo mkdir /var/log/faillock\n\nAdd/modify the \"/etc/security/faillock.conf\" file to match the following line:\n\ndir = /var/log/faillock\n\nUpdate \"/etc/selinux/targeted/contexts/files/file_contexts.local\" with \"faillog_t\" context type for the nondefault faillock tally directory with the following command:\n\n$ sudo semanage fcontext -a -t faillog_t \"/var/log/faillock(/.*)?\"\n\nUpdate the context type of the nondefault faillock directory/subdirectories and files with the following command:\n\n$ sudo restorecon -R -v /var/log/faillock","ccis":["CCI-000044"]},{"vulnId":"V-281253","ruleId":"SV-281253r1184654_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that Secure Shell (SSH) public host key files have mode \"0644\" or less permissive.","description":"If a public host key file is modified by an unauthorized user, the SSH service may be compromised.","checkContent":"Verify RHEL 10 SSH public host key files have a mode of \"0644\" or less permissive with the following command:\n\nNote: SSH public key files may be found in other directories on the system depending on the installation.\n\n$ sudo stat -c \"%a %n\" /etc/ssh/*.pub\n644 /etc/ssh/ssh_host_dsa_key.pub\n644 /etc/ssh/ssh_host_ecdsa_key.pub\n644 /etc/ssh/ssh_host_ed25519_key.pub\n644 /etc/ssh/ssh_host_rsa_key.pub\n\nIf any \"key.pub\" file has a mode more permissive than \"0644\", this is a finding.","fixText":"Configure RHEL 10 SSH public host key files to have mode \"0644\" or less permissive.\n\nChange the mode of public host key files under \"/etc/ssh\" to \"0644\" with the following command:\n\n$ sudo chmod 0644 /etc/ssh/*key.pub\n\nRestart the SSH daemon with the following command for the changes to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-002696"]},{"vulnId":"V-281254","ruleId":"SV-281254r1184754_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the Secure Shell (SSH) daemon does not allow Generic Security Service Application Program Interface (GSSAPI) authentication.","description":"GSSAPI authentication is used to provide additional authentication mechanisms to applications. Allowing GSSAPI authentication through SSH exposes the system's GSSAPI to remote hosts, increasing the attack surface of the system.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.","checkContent":"Verify RHEL 10 SSH daemons do not allow GSSAPI authentication with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*gssapiauthentication'\n/etc/ssh/sshd_config.d/10-stig.conf:GSSAPIAuthentication no\n/etc/ssh/sshd_config.d/50-redhat.conf:GSSAPIAuthentication yes\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i gssapiauthentication\ngssapiauthentication no\n\nIf 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.","fixText":"Configure RHEL 10 SSH daemons to not allow GSSAPI authentication.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nGSSAPIAuthentication no\n\nRestart the SSH service with the following command for the changes to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-001813"]},{"vulnId":"V-281255","ruleId":"SV-281255r1184755_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the Secure Shell (SSH) daemon does not allow Kerberos authentication.","description":"Kerberos authentication for SSH is often implemented using Generic Security Service Application Program Interface (GSSAPI). If Kerberos is enabled through SSH, the SSH daemon provides a means of access to the system's Kerberos implementation. Vulnerabilities in the system's Kerberos implementations may be subject to exploitation.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.","checkContent":"Verify RHEL 10 SSH daemons do not allow Kerberos authentication with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*kerberosauthentication'\n/etc/ssh/sshd_config.d/10-stig.conf:KerberosAuthentication no\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i kerberosauthentication\nkerberosauthentication no\n\nIf 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.","fixText":"Configure RHEL 10 SSH daemons to not allow Kerberos authentication.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nKerberosAuthentication no\n\nRestart the SSH service with the following command for the changes to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-001813"]},{"vulnId":"V-281256","ruleId":"SV-281256r1184756_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the Secure Shell (SSH) daemon does not allow rhosts authentication.","description":"SSH trust relationships mean a compromise on one host can allow an attacker to move trivially to other hosts.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.","checkContent":"Verify RHEL 10 SSH daemons do not allow rhosts authentication with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*ignorerhosts'\n/etc/ssh/sshd_config.d/10-stig.conf:IgnoreRhosts yes\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i ignorerhosts\nignorerhosts yes\n\nIf 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.","fixText":"Configure RHEL 10 SSH daemons to not allow rhosts authentication.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nIgnoreRhosts yes\n\nRestart the SSH service with the following command for the changes to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-002696"]},{"vulnId":"V-281257","ruleId":"SV-281257r1184757_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the Secure Shell (SSH) daemon does not allow known hosts authentication.","description":"Configuring the \"IgnoreUserKnownHosts\" setting for the SSH daemon provides additional assurance that remote login via SSH will require a password, even in the event of misconfiguration elsewhere.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.","checkContent":"Verify RHEL 10 SSH daemons do not allow known hosts authentication with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*ignoreuserknownhosts'\n/etc/ssh/sshd_config.d/10-stig.conf:IgnoreUserKnownHosts yes\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i ignoreuserknownhosts\nignoreuserknownhosts yes\n\nIf 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.","fixText":"Configure RHEL 10 SSH daemons to not allow known hosts authentication.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nIgnoreUserKnownHosts yes\n\nRestart the SSH service with the following command for the changes to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-002696"]},{"vulnId":"V-281258","ruleId":"SV-281258r1184758_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the Secure Shell (SSH) daemon disables remote X connections for interactive users.","description":"When X11 forwarding is enabled, there may be additional exposure to the server and client displays if the sshd proxy display is configured to listen on the wildcard address. By default, sshd binds the forwarding server to the loopback address and sets the hostname part of the DISPLAY environment variable to localhost. This prevents remote hosts from connecting to the proxy display.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.","checkContent":"Verify RHEL 10 SSH daemons do not allow X11Forwarding with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*x11forwarding'\n/etc/ssh/sshd_config.d/10-stig.conf:X11forwarding no\n/etc/ssh/sshd_config.d/50-redhat.conf:X11Forwarding yes\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i x11forwarding\nx11forwarding no\n\nIf 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.","fixText":"Configure RHEL 10 SSH daemons to not allow X11 forwarding.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nX11forwarding no\n\nRestart the SSH service with the following command for the changes to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-002696"]},{"vulnId":"V-281259","ruleId":"SV-281259r1184759_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the Secure Shell (SSH) daemon performs strict mode checking of home directory configuration files.","description":"If other users have access to modify user-specific SSH configuration files, they may be able to log in to the system as another user.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.","checkContent":"Verify RHEL 10 SSH daemons perform strict mode checking of home directory configuration files with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*strictmodes'\n/etc/ssh/sshd_config.d/10-stig.conf:StrictModes yes\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i strictmodes\nstrictmodes yes\n\nIf 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.","fixText":"Configure RHEL 10 SSH daemons to perform strict mode checking of home directory configuration files.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nStrictModes yes\n\nRestart the SSH service with the following command for the changes to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-002696"]},{"vulnId":"V-281260","ruleId":"SV-281260r1184760_rule","severity":"medium","ruleTitle":"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.","description":"Providing users with feedback on when account accesses last occurred facilitates user recognition and reporting of unauthorized account use.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.","checkContent":"Verify RHEL 10 SSH daemons provide users with feedback on when account accesses last occurred with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*printlastlog'\n/etc/ssh/sshd_config.d/10-stig.conf:PrintLastLog yes\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i printlastlog\nprintlastlog yes\n\nIf 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.","fixText":"Configure RHEL 10 SSH daemons to provide users with feedback on when account accesses last occurred.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nPrintLastLog yes\n\nRestart the SSH service with the following command for the changes to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-002696"]},{"vulnId":"V-281261","ruleId":"SV-281261r1184761_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that the Secure Shell (SSH) daemon prevents remote hosts from connecting to the proxy display.","description":"When X11 forwarding is enabled, there may be additional exposure to the server and client displays if the sshd proxy display is configured to listen on the wildcard address. By default, sshd binds the forwarding server to the loopback address and sets the hostname part of the \"DISPLAY\" environment variable to localhost. This prevents remote hosts from connecting to the proxy display.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.","checkContent":"Verify RHEL 10 SSH daemons prevent remote hosts from connecting to the proxy display with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*x11uselocalhost'\n/etc/ssh/sshd_config.d/10-stig.conf:X11UseLocalhost yes\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i x11uselocalhost\nx11uselocalhost yes\n\nIf 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.","fixText":"Configure RHEL 10 SSH daemons to prevent remote hosts from connecting to the proxy display.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nX11UseLocalhost yes\n\nRestart the SSH service with the following command for the changes to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-002696"]},{"vulnId":"V-281262","ruleId":"SV-281262r1184762_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that Secure Shell (SSH) server configuration files' permissions are not modified.","description":"Service configuration files enable or disable features of their respective services, which if configured incorrectly can lead to insecure and vulnerable configurations. Therefore, service configuration files must be owned by the correct group to prevent unauthorized changes.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.","checkContent":"Verify RHEL 10 is configured so that SSH server configuration files' permissions are not modified.\n\nCheck the permissions of the \"/etc/ssh/sshd_config\" file with the following command:\n\n$ sudo rpm --verify openssh-server | awk '! ($2 == \"c\" && $1 ~ /^.\\..\\.\\.\\.\\..\\./) {print $0}'\n\nIf the command returns any output, this is a finding.","fixText":"Configure RHEL 10 so that SSH server configuration files' permissions are not modified.\n\nRun the following commands to restore the correct permissions of OpenSSH server configuration files:\n\n$ sudo rpm --setugids openssh-server\n$ sudo rpm --setperms openssh-server","ccis":["CCI-000213"]},{"vulnId":"V-281263","ruleId":"SV-281263r1184763_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that SSHD accepts public key authentication.","description":"Without the use of multifactor authentication, the ease of access to privileged functions is greatly increased. Multifactor authentication requires using two or more factors to achieve authentication. A privileged account is defined as an information system account with authorizations of a privileged user. A DOD common access card (CAC) with DOD-approved PKI is an example of multifactor authentication.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.\n\nSatisfies: SRG-OS-000105-GPOS-00052, SRG-OS-000106-GPOS-00053, SRG-OS-000107-GPOS-00054, SRG-OS-000108-GPOS-00055","checkContent":"Note: If the system administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable.\n\nVerify RHEL 10 SSH daemons accept public key encryption with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*pubkeyauthentication'\n/etc/ssh/sshd_config.d/10-stig.conf:PubkeyAuthentication yes\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i pubkeyauthentication\npubkeyauthentication yes\n\nIf 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.","fixText":"Configure RHEL 10 to accept public key authentication.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nPubkeyAuthentication yes\n\nRestart the SSH daemon with the following command for the settings to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-000765","CCI-000766"]},{"vulnId":"V-281264","ruleId":"SV-281264r1184764_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that SSHD does not allow blank passwords.","description":"If an account has an empty password, anyone could log in and run commands with the privileges of that account. Accounts with empty passwords should never be used in operational environments.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.\n\nSatisfies: SRG-OS-000106-GPOS-00053, SRG-OS-000480-GPOS-00229","checkContent":"Verify RHEL 10 remote access using SSH prevents logging on with a blank password with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*permitemptypasswords'\n/etc/ssh/sshd_config.d/10-stig.conf:PermitEmptyPasswords no\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i permitemptypasswords\npermitemptypasswords no\n\nIf 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.","fixText":"Configure RHEL 10 to prevent SSH users from logging on with blank passwords. \n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nPermitEmptyPasswords no\n\nRestart the SSH daemon with the following command for the settings to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-000766"]},{"vulnId":"V-281265","ruleId":"SV-281265r1184765_rule","severity":"medium","ruleTitle":"RHEL 10 must not permit direct logins to the root account using remote access via Secure Shell (SSH).","description":"Even though the communications channel may be encrypted, an additional layer of security is gained by extending the policy of not logging directly on as root. In addition, logging in with a user-specific account provides individual accountability of actions performed on the system and helps to minimize direct attack attempts on root's password.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.","checkContent":"Verify RHEL 10 remote access using SSH prevents users from logging on directly as \"root\" with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*permitrootlogin'\n/etc/ssh/sshd_config.d/10-stig.conf:PermitRootLogin no\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i permitrootlogin\npermitrootlogin no\n\nIf 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.","fixText":"Configure RHEL 10 to prevent SSH users from logging on directly as root.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop-in file that will lexicographically precede 50-redhat.conf and add the following line:\n\nPermitRootLogin no\n\nRestart the SSH daemon with the following command for the settings to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-004045"]},{"vulnId":"V-281266","ruleId":"SV-281266r1184766_rule","severity":"medium","ruleTitle":"RHEL 10 must not allow a noncertificate trusted host Secure Shell (SSH) login to the system.","description":"SSH trust relationships mean a compromise on one host can allow an attacker to move trivially to other hosts.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.","checkContent":"Verify RHEL 10 does not allow a noncertificate trusted host SSH login to the system with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*hostbasedauthentication'\n/etc/ssh/sshd_config.d/10-stig.conf:HostbasedAuthentication no\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i hostbasedauthentication\nhostbasedauthentication no\n\nIf 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.","fixText":"Configure RHEL 10 to not allow a noncertificate trusted host SSH login to the system.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nHostbasedAuthentication no\n\nRestart the SSH daemon with the following command for the settings to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-000213"]},{"vulnId":"V-281267","ruleId":"SV-281267r1184767_rule","severity":"high","ruleTitle":"RHEL 10 must not allow users to override Secure Shell (SSH) environment variables.","description":"SSH environment options potentially allow users to bypass access restriction in some configurations.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.","checkContent":"Verify RHEL 10 disables unattended or automatic login via SSH with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*permituserenvironment'\n/etc/ssh/sshd_config.d/10-stig.conf:PermitUserEnvironment no\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i permituserenvironment\npermituserenvironment no\n\nIf the \"PermitUserEnvironment\" 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.","fixText":"Configure RHEL 10 to disable unattended or automatic login via SSH.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nPermitUserEnvironment no\n\nRestart the SSH daemon with the following command for the setting to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-000381"]},{"vulnId":"V-281268","ruleId":"SV-281268r1184768_rule","severity":"high","ruleTitle":"RHEL 10 must force a frequent session key renegotiation for Secure Shell (SSH) connections to the server.","description":"Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered.\n\nThis requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification.\n\nProtecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa.\n\nSession key regeneration limits the chances of a session key becoming compromised.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.\n\nSatisfies: SRG-OS-000423-GPOS-00187, SRG-OS-000033-GPOS-00014, SRG-OS-000424-GPOS-00188","checkContent":"Verify RHEL 10 SSH servers are configured to force frequent session key renegotiation with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*rekeylimit'\n/etc/ssh/sshd_config.d/10-stig.conf:RekeyLimit 1G 1h\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i rekeylimit\nrekeylimit 1073741824 3600\n\nIf the \"RekeyLimit\" keyword is not set to \"1G 1h\" in a drop-in that lexicographically precedes 50-redhat.conf, or if no output is returned, this is a finding.","fixText":"Configure RHEL 10 to force a frequent session key renegotiation for SSH connections to the server.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nRekeyLimit 1G 1h\n\nRestart the SSH daemon with the following command for the settings to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-002418","CCI-000068","CCI-002421"]},{"vulnId":"V-281269","ruleId":"SV-281269r1184769_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured so that all network connections associated with Secure Shell (SSH) traffic terminate after becoming unresponsive.","description":"Terminating an idle SSH session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. Quickly terminating an idle SSH session will also free up resources committed by the managed network element.\n\nTerminating network connections associated with communications sessions includes, for example, deallocating associated TCP/IP address/port pairs at the operating system level and deallocating networking assignments at the application level if multiple application sessions are using a single operating system-level network connection. This does not mean the operating system terminates all sessions or network access; it only ends the inactive session and releases the resources associated with that session.\n\nRHEL 10 uses \"/etc/ssh/sshd_config\" for configurations of OpenSSH. Within the sshd_config, the product of the values of \"ClientAliveInterval\" and \"ClientAliveCountMax\" are used to establish the inactivity threshold. The \"ClientAliveInterval\" is a timeout interval in seconds after which if no data has been received from the client, sshd will send a message through the encrypted channel to request a response from the client. The \"ClientAliveCountMax\" is the number of client alive messages that may be sent without sshd receiving any messages back from the client. If this threshold is met, sshd will disconnect the client. For more information on these settings and others, refer to the sshd_config man pages.\n\nOpenSSH uses the first occurrence of a keyword it sees, and drop-in files are read in lexicographical order at the start of the configuration. Red Hat recommends using drop-in files rather than changing base configuration files.\n\nSatisfies: SRG-OS-000163-GPOS-00072, SRG-OS-000279-GPOS-00109","checkContent":"Verify RHEL 10 network connections associated with SSH traffic terminate after becoming unresponsive. \n\nSet the \"ClientAliveCountMax\" to \"1\" by performing the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*clientalivecountmax'\n/etc/ssh/sshd_config.d/10-stig.conf:ClientAliveCountMax 1\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i clientalivecountmax\nclientalivecountmax 1\n\nIf 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.","fixText":"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.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nClientAliveCountMax 1\n\nRestart the SSH daemon with the following command for the changes to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-001133","CCI-002361"]},{"vulnId":"V-281270","ruleId":"SV-281270r1166762_rule","severity":"medium","ruleTitle":"RHEL 10 must forward mail from postmaster to the root account using a postfix alias.","description":"It is critical for the appropriate personnel to be aware if a system is at risk of failing to process audit logs as required. Without this notification, the security personnel may be unaware of an impending failure of the audit capability, and system operation may be adversely affected.\n\nAudit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded.","checkContent":"Verify RHEL 10 notifies administrators in the event of an audit processing failure.\n\nCheck that the \"/etc/aliases\" file has a defined value for \"root\".\n\n$ sudo grep \"postmaster:\\s*root$\" /etc/aliases\npostmaster:     root\n\nIf 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. \n\nIf there is no evidence of the proper personnel being notified of an audit processing failure, this is a finding.","fixText":"Configure RHEL 10 to have a valid email address as an alias for the root account.\n\nAppend the following line to \"/etc/aliases\":\n\npostmaster: root\n\nRun the following command:\n\n$ sudo newaliases","ccis":["CCI-000139"]},{"vulnId":"V-281271","ruleId":"SV-281271r1197244_rule","severity":"medium","ruleTitle":"RHEL 10 must not have a \"shosts.equiv\" file on the system.","description":"The \"shosts.equiv\" files are used to configure host-based authentication for the system via Secure Shell (SSH). Host-based authentication is not sufficient for preventing unauthorized access to the system, as it does not require interactive identification and authentication of a connection request, or for the use of two-factor authentication.","checkContent":"Verify RHEL 10 does not have a \"shosts.equiv\" file on the system with the following command:\n\n$ sudo find / -name shosts.equiv\n\nIf a \"shosts.equiv\" file is found, this is a finding.","fixText":"Configure RHEL 10 to not have a \"shosts.equiv\" file on the system.\n\nRemove any found \"shosts.equiv\" files from the system:\n\n$ sudo rm /[path]/[to]/[file]/shosts.equiv","ccis":["CCI-000213"]},{"vulnId":"V-281272","ruleId":"SV-281272r1166768_rule","severity":"medium","ruleTitle":"RHEL 10 must not have any \".shosts\" files on the system.","description":"The \".shosts\" files are used to configure host-based authentication for individual users or the system via Secure Shell (SSH). Host-based authentication is not sufficient for preventing unauthorized access to the system, as it does not require interactive identification and authentication of a connection request, or for the use of two-factor authentication.","checkContent":"Verify RHEL 10 does not have any \".shosts\" files on the system with the following command:\n\n$ sudo find / -name .shosts\n\nIf a \".shosts\" file is found, this is a finding.","fixText":"Configure RHEL 10 to not have any \".shosts\" files on the system.\n\nRemove any found \".shosts\" files from the system with the following command:\n\n$ sudo rm /[path]/[to]/[file]/.shosts","ccis":["CCI-000213"]},{"vulnId":"V-281273","ruleId":"SV-281273r1184699_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent a user from overriding the disabling of the graphical user interface automount function.","description":"Without identifying and authenticating devices, unidentified or unknown devices may be introduced, thereby facilitating malicious activity.\n\nPeripherals include, but are not limited to, such devices as flash drives, external storage, and printers.\n\nSatisfies: SRG-OS-000114-GPOS-00059, SRG-OS-000378-GPOS-00163","checkContent":"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.\n\nVerify RHEL 10 disables the ability of the user to override the graphical user interface automount setting.\n\nDetermine which profile the system database is using with the following command:\n\n$ sudo grep system-db /etc/dconf/profile/user\nsystem-db:local\n\nCheck that the automount setting is locked from nonprivileged user modification with the following command:\n\nNote: 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.\n\n$ sudo grep 'automount-open' /etc/dconf/db/local.d/locks/*\n/org/gnome/desktop/media-handling/automount-open\n\nIf the command does not return at least the example result, this is a finding.","fixText":"Configure RHEL 10 so that the GNOME desktop does not allow a user to change the setting that disables automated mounting of removable media.\n\nNote: 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.\n\nUpdate the \"/etc/dconf/db/local.d/locks/00-security-settings-lock\" file to prevent user modification:\n\n$ sudo vi /etc/dconf/db/local.d/locks/00-security-settings-lock\n\n/org/gnome/desktop/media-handling/automount-open\n\nUpdate the dconf system databases:\n\n$ sudo dconf update","ccis":["CCI-000778","CCI-001958"]},{"vulnId":"V-281274","ruleId":"SV-281274r1197245_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent a user from overriding the disabling of the graphical user interface autorun function.","description":"Techniques used to address this include protocols using nonces (e.g., numbers generated for a specific one-time use) or challenges (e.g., Transport Layer Security [TLS], WS_Security). Additional techniques include time-synchronous or challenge-response one-time authenticators.\n\nSatisfies: SRG-OS-000114-GPOS-00059, SRG-OS-000378-GPOS-00163","checkContent":"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.\n\nVerify RHEL 10 disables ability of the user to override the graphical user interface autorun setting.\n\nCheck that the autorun setting is set to prevent user modification with the following command:\n\n$ gsettings writable org.gnome.desktop.media-handling autorun-never\nfalse\n\nIf \"autorun-never\" is writable, the result is \"true\". \n\nIf this is not documented with the information system security officer as an operational requirement, this is a finding.","fixText":"Configure RHEL 10 so that the GNOME desktop does not allow a user to change the setting that disables autorun on removable media.\n\nNote: 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.\n\nUpdate the \"/etc/dconf/db/local.d/locks/00-security-settings-lock\" file to prevent user modification:\n\n$ sudo vi /etc/dconf/db/local.d/locks/00-security-settings-lock\n\n/org/gnome/desktop/media-handling/autorun-never\n\nUpdate the dconf system databases:\n\n$ sudo dconf update","ccis":["CCI-000778","CCI-001958"]},{"vulnId":"V-281275","ruleId":"SV-281275r1166777_rule","severity":"high","ruleTitle":"RHEL 10 must not allow unattended or automatic login via the graphical user interface.","description":"Failure to restrict system access to authenticated users negatively impacts operating system security.","checkContent":"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.\n\nVerify RHEL 10 does not allow an unattended or automatic login to the system via a graphical user interface.\n\nCheck for the value of the \"AutomaticLoginEnable\" in the \"/etc/gdm/custom.conf\" file with the following command:\n\n$  grep -i automaticlogin /etc/gdm/custom.conf\nAutomaticLoginEnable=false\n\nIf the value of \"AutomaticLoginEnable\" is not set to \"false\", this is a finding.","fixText":"Configure RHEL 10 so that the GNOME desktop display manager disables automatic login.\n\nUpdate the \"/etc/gdm/custom.conf\" file to disable automatic login to the GNOME desktop:\n\n$ sudo vi /etc/gdm/custom.conf\n\n[daemon]\nAutomaticLoginEnable=false","ccis":["CCI-000213"]},{"vulnId":"V-281276","ruleId":"SV-281276r1166780_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent a user from overriding the disabling of the graphical user smart card removal action.","description":"A session lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not want to log out because of the temporary nature of the absence.\n\nThe session lock is implemented at the point where session activity can be determined. Rather than be forced to wait for a period of time to expire before the user session can be locked, RHEL 10 must provide users with the ability to manually invoke a session lock so users can secure their session if they must temporarily vacate the immediate physical vicinity.\n\nSatisfies: SRG-OS-000028-GPOS-00009, SRG-OS-000030-GPOS-00011","checkContent":"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.\n\nVerify RHEL 10 disables ability of the user to override the smart card removal action setting with the following command:\n\n$ gsettings writable org.gnome.settings-daemon.peripherals.smartcard removal-action\nfalse\n\nIf \"removal-action\" is writable and the result is \"true\", this is a finding.","fixText":"Configure RHEL 10 to prevent a user from overriding the disabling of the graphical user smart card removal action.\n\nAdd the following line to \"/etc/dconf/db/local.d/locks/00-security-settings-lock\" to prevent user override of the smart card removal action:\n\n/org/gnome/settings-daemon/peripherals/smartcard/removal-action\n\nUpdate the dconf system databases:\n\n$ sudo dconf update","ccis":["CCI-000056","CCI-000057"]},{"vulnId":"V-281277","ruleId":"SV-281277r1166783_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent a user from overriding the screensaver lock-enabled setting for the graphical user interface.","description":"A session timeout lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not log out because of the temporary nature of the absence. Rather than relying on the user to manually lock their operating system session prior to vacating the vicinity, operating systems must be able to identify when a user's session has idled and take action to initiate the session lock.\n\nThe session lock is implemented at the point where session activity can be determined and/or controlled.\n\nImplementing session settings will have little value if a user is able to manipulate these settings from the defaults prescribed in the other requirements of this implementation guide.\n\nSatisfies: SRG-OS-000028-GPOS-00009, SRG-OS-000030-GPOS-00011","checkContent":"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.\n\nVerify RHEL 10 prevents a user from overriding the screensaver lock-enabled setting with the following command:\n\n$ gsettings writable org.gnome.desktop.screensaver lock-enabled\nfalse\n\nIf \"lock-enabled\" is writable, and the result is \"true\", this is a finding.","fixText":"Configure RHEL 10 to prevent a user from overriding settings for graphical user interfaces.\n\nCreate a database to contain the systemwide screensaver settings (if it does not already exist) with the following command:\n\nNote: 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.\n\nUpdate the \"/etc/dconf/db/local.d/locks/session\" file to prevent nonprivileged users from modifying the screensaver lock:\n\n$ sudo vi /etc/dconf/db/local.d/locks/session\n\n/org/gnome/desktop/screensaver/lock-enabled\n\nRun the following command to update the database:\n\n$ sudo dconf update","ccis":["CCI-000056","CCI-000057"]},{"vulnId":"V-281278","ruleId":"SV-281278r1166786_rule","severity":"medium","ruleTitle":"RHEL 10 must automatically lock graphical user sessions after 15 minutes of inactivity.","description":"A session timeout lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not log out because of the temporary nature of the absence. Rather than relying on the user to manually lock their operating system session prior to vacating the vicinity, the GNOME desktop can be configured to identify when a user's session has idled and take action to initiate a session lock.\n\nSatisfies: SRG-OS-000029-GPOS-00010, SRG-OS-000031-GPOS-00012","checkContent":"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.\n\nVerify RHEL 10 initiates a session lock after a 15-minute period of inactivity for graphical user interfaces with the following command:\n\n$ sudo gsettings get org.gnome.desktop.session idle-delay\nuint32 900\n\nIf \"idle-delay\" is set to \"0\" or a value greater than \"900\", this is a finding.","fixText":"Configure RHEL 10 to initiate a screensaver after a 15-minute period of inactivity for graphical user interfaces.\n\nNote: 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.\n\nUpdate the \"/etc/dconf/db/local.d/00-screensaver\" file to prevent nonprivileged users from modifying the screensaver idle-delay setting:\n\n$ sudo vi /etc/dconf/db/local.d/00-screensaver\n\n[org/gnome/desktop/session]\n# Set the lock time out to 900 seconds before the session is considered idle\nidle-delay=uint32 900\n\nUpdate the system databases:\n\n$ sudo dconf update","ccis":["CCI-000057","CCI-000060"]},{"vulnId":"V-281279","ruleId":"SV-281279r1166789_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent a user from overriding the session idle-delay setting for the graphical user interface.","description":"A session timeout lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not log out because of the temporary nature of the absence. Rather than relying on the user to manually lock their operating system session prior to vacating the vicinity, the GNOME desktop can be configured to identify when a user's session has idled and take action to initiate the session lock. Therefore, users should not be allowed to change session settings.\n\nSatisfies: SRG-OS-000029-GPOS-00010, SRG-OS-000031-GPOS-00012","checkContent":"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.\n\nVerify RHEL 10 prevents a user from overriding settings for session idle delay with the following command:\n\n$ gsettings writable org.gnome.desktop.session idle-delay\nfalse\n\nIf \"idle-delay\" is writable, and the result is \"true\", this is a finding.","fixText":"Configure RHEL 10 to prevent a user from overriding settings for graphical user interfaces.\n\nNote: 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.\n\nUpdate the \"/etc/dconf/db/local.d/locks/session\" file to prevent nonprivileged users from modifying the idle-delay lock:\n\n$ sudo vi /etc/dconf/db/local.d/locks/session\n\n/org/gnome/desktop/session/idle-delay\n\nRun the following command to update the database:\n\n$ sudo dconf update","ccis":["CCI-000057","CCI-000060"]},{"vulnId":"V-281280","ruleId":"SV-281280r1166792_rule","severity":"medium","ruleTitle":"RHEL 10 must initiate a session lock for graphical user interfaces when the screensaver is activated.","description":"A session lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not want to log out because of the temporary nature of the absence.\n\nSatisfies: SRG-OS-000029-GPOS-00010, SRG-OS-000031-GPOS-00012","checkContent":"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.\n\nVerify RHEL 10 initiates a session lock for graphical user interfaces when the screensaver is activated with the following command:\n\n$ gsettings get org.gnome.desktop.screensaver lock-delay\nuint32 5\n\nIf the \"uint32\" setting is not set to \"5\" or less, or is missing, this is a finding.","fixText":"Configure RHEL 10 to initiate a session lock for graphical user interfaces when a screensaver is activated.\n\nNote: 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.\n\nCreate a database to contain the systemwide screensaver settings (if it does not already exist) with the following command:\n\n$ sudo vi /etc/dconf/db/local.d/00-screensaver\n\n[org/gnome/desktop/screensaver]\nlock-delay=uint32 5\n\nThe \"uint32\" must be included along with the integer key values as shown.\n\nUpdate the system databases:\n\n$ sudo dconf update","ccis":["CCI-000057","CCI-000060"]},{"vulnId":"V-281281","ruleId":"SV-281281r1166795_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent a user from overriding the session lock-delay setting for the graphical user interface.","description":"A session timeout lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not log out because of the temporary nature of the absence. Rather than relying on the user to manually lock their operating system session prior to vacating the vicinity, the GNOME desktop can be configured to identify when a user's session has idled and take action to initiate the session lock. Therefore, users should not be allowed to change session settings.\n\nSatisfies: SRG-OS-000029-GPOS-00010, SRG-OS-000031-GPOS-00012","checkContent":"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.\n\nVerify RHEL 10 prevents a user from overriding settings for the screensaver lock delay with the following command:\n\n$ gsettings writable org.gnome.desktop.screensaver lock-delay\nfalse\n\nIf \"lock-delay\" is writable, and the result is \"true\", this is a finding.","fixText":"Configure RHEL 10 to prevent a user from overriding settings for graphical user interfaces.\n\nNote: 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.\n\nUpdate the \"/etc/dconf/db/local.d/locks/session\" file to prevent nonprivileged users from modifying the lock-delay setting:\n\n$ sudo vi /etc/dconf/db/local.d/locks/session\n\n/org/gnome/desktop/screensaver/lock-delay\n\nRun the following command to update the database:\n\n$ sudo dconf update","ccis":["CCI-000057","CCI-000060"]},{"vulnId":"V-281282","ruleId":"SV-281282r1166798_rule","severity":"medium","ruleTitle":"RHEL 10 must conceal, via the session lock, information previously visible on the display with a publicly viewable image.","description":"Setting the screensaver mode to blank-only conceals the contents of the display from passersby.","checkContent":"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.\n\nVerify RHEL 10 prevents a user from overriding settings a blank screensaver with the following command:\n\n$ gsettings writable org.gnome.desktop.screensaver picture-uri\nfalse\n\nIf \"picture-uri\" is writable, and the result is \"true\", this is a finding.","fixText":"Configure RHEL 10 to prevent a user from overriding the picture-uri setting for graphical user interfaces.\n\nNote: 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.\n\nUpdate the \"/etc/dconf/db/local.d/00-security-settings\" file to prevent a user from overriding the \"picture-uri\" setting:\n\n$ sudo vi /etc/dconf/db/local.d/00-security-settings\n\n[org/gnome/desktop/screensaver]\npicture-uri=''\n\nUpdate 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:\n\n$ sudo vi /etc/dconf/db/local.d/locks/00-security-settings-lock\n\n/org/gnome/desktop/screensaver/picture-uri\n\nUpdate the dconf system databases:\n\n$ sudo dconf update","ccis":["CCI-000060"]},{"vulnId":"V-281283","ruleId":"SV-281283r1166801_rule","severity":"medium","ruleTitle":"RHEL 10 must ensure effective dconf policy matches the policy keyfiles.","description":"Unlike text-based keyfiles, the binary database is impossible to check through most automated and all manual means; therefore, to evaluate dconf configuration, both must be true at the same time. Configuration files must be compliant, and the database must be more recent than those keyfiles, which gives confidence that it reflects them.","checkContent":"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.\n\nVerify RHEL 10 ensures effective dconf policy matches the policy keyfiles.\n\nCheck 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:\n\n$ 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\n\nIf the command has any output, then a dconf database needs to be updated, and this is a finding.","fixText":"Configure RHEL 10 to ensure that the effective dconf policy matches the policy keyfiles.\n\nUpdate the dconf databases by running the following command:\n\n$ sudo dconf update","ccis":["CCI-000213"]},{"vulnId":"V-281284","ruleId":"SV-281284r1197247_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent a user from overriding the disable-restart-buttons setting for the graphical user interface.","description":"A user who is at the console can reboot the system at the login screen. If restart or shutdown buttons are pressed at the login screen, this can create the risk of short-term loss of availability of systems due to reboot.","checkContent":"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.\n\nVerify RHEL 10 prevents a user from overriding the disable-restart-buttons setting for graphical user interfaces:\n\n$ gsettings writable org.gnome.login-screen disable-restart-buttons\nfalse\n\nIf \"disable-restart-buttons\" is writable, and the result is \"true\", this is a finding.","fixText":"Configure RHEL 10 to prevent a user from overriding the disable-restart-buttons setting for graphical user interfaces.\n\nNote: 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.\n\nUpdate the \"/etc/dconf/db/local.d/locks/session\" file to prevent nonprivileged users from modifying the disable-restart-buttons setting:\n\n$ sudo vi /etc/dconf/db/local.d/locks/session\n\n/org/gnome/login-screen/disable-restart-buttons\n\nRun the following command to update the database:\n\n$ sudo dconf update","ccis":["CCI-002696"]},{"vulnId":"V-281285","ruleId":"SV-281285r1197249_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent a user from overriding the Ctrl-Alt-Del sequence settings for the graphical user interface.","description":"A locally logged-in user who presses Ctrl-Alt-Del when at the console can reboot the system. If accidentally pressed, as could happen in the case of a mixed operating system environment, this can create the risk of short-term loss of systems' availability due to unintentional reboot.","checkContent":"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.\n\nVerify RHEL 10 users cannot enable the Ctrl-Alt-Del sequence in the GNOME desktop:\n\n$ gsettings writable org.gnome.settings-daemon.plugins.media-keys logout\nfalse\n\nIf \"logout\" is writable and the result is \"true\", this is a finding.\n\nIf GNOME is configured to shut down when Ctrl-Alt-Del is pressed, this is a finding.","fixText":"Configure RHEL 10 to disallow the user changing the Ctrl-Alt-Del sequence in the GNOME desktop.\n\nNote: 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.\n\nUpdate the \"/etc/dconf/db/local.d/locks/session\" file to prevent nonprivileged users from modifying the Ctrl-Alt-Del setting:\n\n$ sudo vi /etc/dconf/db/local.d/locks/session\n\n/org/gnome/settings-daemon/plugins/media-keys/logout\n\nRun the following command to update the database:\n\n$ sudo dconf update","ccis":["CCI-002385"]},{"vulnId":"V-281286","ruleId":"SV-281286r1166810_rule","severity":"medium","ruleTitle":"RHEL 10 must disable the ability of a user to accidentally press Ctrl-Alt-Del and cause a system to shut down or reboot.","description":"A locally logged-in user who presses Ctrl-Alt-Del, when at the console, can reboot the system. If accidentally pressed, as could happen in the case of mixed operating system environments, this can create the risk of short-term loss of availability of systems due to unintentional reboot.","checkContent":"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.\n\nVerify RHEL 10 is configured to ignore the Ctrl-Alt-Del sequence in the GNOME desktop with the following command:\n\nCheck that the Ctrl-Alt-Del sequence settings for the graphical user interface cannot be overridden with the following command:\n\n$ gsettings get org.gnome.settings-daemon.plugins.media-keys logout\n@as []\n\nIf the GNOME desktop is configured to shut down when Ctrl-Alt-Del is pressed, this is a finding.","fixText":"Configure RHEL 10 to ignore the Ctrl-Alt-Del sequence in the GNOME desktop.\n\nNote: 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.\n\nUpdate the \"/etc/dconf/db/local.d/00-media-keys\" file to set the media-keys logout setting as an empty string array:\n\n$ sudo vi /etc/dconf/db/local.d/00-media-keys\n\n[org/gnome/settings-daemon/plugins/media-keys]\nlogout=@as []\n\nRun the following command to update the database:\n\n$ sudo dconf update","ccis":["CCI-002385"]},{"vulnId":"V-281287","ruleId":"SV-281287r1166813_rule","severity":"medium","ruleTitle":"RHEL 10 must disable the user list at login for graphical user interfaces.","description":"Leaving the user list enabled is a security risk because it allows anyone with physical access to the system to enumerate known user accounts without authenticated access to the system.","checkContent":"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.\n\nVerify RHEL 10 disables the user login list for graphical user interfaces with the following command:\n\n$ gsettings get org.gnome.login-screen disable-user-list\ntrue\n\nIf the setting is \"false\", this is a finding.","fixText":"Configure RHEL 10 to disable the user list at login for graphical user interfaces.\n\nNote: 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.\n\nCreate a database to contain the systemwide screensaver settings (if it does not already exist) with the following command:\n\n$ sudo vi /etc/dconf/db/local.d/02-login-screen\n\n[org/gnome/login-screen]\ndisable-user-list=true\n\nUpdate the system databases:\n\n$ sudo dconf update","ccis":["CCI-000381"]},{"vulnId":"V-281288","ruleId":"SV-281288r1166816_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured to disable USB mass storage.","description":"USB mass storage permits easy introduction of unknown devices, thereby facilitating malicious activity.\n\nSatisfies: SRG-OS-000114-GPOS-00059, SRG-OS-000378-GPOS-00163","checkContent":"Verify RHEL 10 disables the ability to load the USB Storage kernel module with the following command:\n\n$ sudo grep -rs usb-storage /etc/modprobe.conf /etc/modprobe.d/*\n/etc/modprobe.d/usb-storage.conf:install usb-storage /bin/false\n/etc/modprobe.d/usb-storage.conf:blacklist usb-storage\n\nIf 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.","fixText":"Configure RHEL 10 to prevent the usb-storage kernel module from being loaded.\n\nAdd the following lines to the file \"/etc/modprobe.d/usb-storage.conf\" (or create \"usb-storage.conf\" if it does not exist):\n\n$ sudo vi /etc/modprobe.d/usb-storage.conf\n\ninstall usb-storage /bin/false\nblacklist usb-storage","ccis":["CCI-000778","CCI-001958"]},{"vulnId":"V-281289","ruleId":"SV-281289r1166819_rule","severity":"medium","ruleTitle":"RHEL 10 must disable Bluetooth.","description":"This requirement applies to wireless peripheral technologies (e.g., wireless mice, keyboards, displays, etc.) used with RHEL 10 systems. Wireless peripherals (e.g., Wi-Fi/Bluetooth/IR keyboards, mice and pointing devices, and near field communications [NFC]) present a unique challenge by creating an open, unsecured port on a computer. \n\nWireless peripherals must meet DOD requirements for wireless data transmission and be approved for use by the authorizing official. Even though some wireless peripherals, such as mice and pointing devices, do not ordinarily carry information that must be protected, modification of communications with these wireless peripherals may be used to compromise the RHEL 10 operating system.\n\nSatisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000300-GPOS-00118","checkContent":"Verify RHEL 10 disables the ability to load the Bluetooth kernel module with the following command:\n\n$ sudo grep -rs bluetooth /etc/modprobe.conf /etc/modprobe.d/*\n/etc/modprobe.d/bluetooth.conf:install bluetooth /bin/false\n/etc/modprobe.d/bluetooth.conf:blacklist bluetooth\n\nIf 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.","fixText":"Configure RHEL 10 to disable the Bluetooth adapter when not in use.\n\nAdd the following lines to the file \"/etc/modprobe.d/bluetooth.conf\" (or create \"bluetooth.conf\" if it does not exist):\n\n$ sudo vi /etc/modprobe.d/bluetooth.conf\n\ninstall bluetooth /bin/false\nblacklist bluetooth\n\nReboot the system for the settings to take effect.","ccis":["CCI-000381","CCI-001443"]},{"vulnId":"V-281290","ruleId":"SV-281290r1166822_rule","severity":"medium","ruleTitle":"RHEL 10 must disable wireless network adapters.","description":"This requirement applies to wireless peripheral technologies (e.g., wireless mice, keyboards, displays, etc.) used with RHEL 10 systems. Wireless peripherals (e.g., Wi-Fi/Bluetooth/IR keyboards, mice and pointing devices, and near field communications [NFC]) present a unique challenge by creating an open, unsecured port on a computer. \n\nWireless peripherals must meet DOD requirements for wireless data transmission and be approved for use by the authorizing official. Even though some wireless peripherals, such as mice and pointing devices, do not ordinarily carry information that must be protected, modification of communications with these wireless peripherals may be used to compromise the RHEL 10 operating system.\n\nSatisfies: SRG-OS-000299-GPOS-00117, SRG-OS-000300-GPOS-00118, SRG-OS-000424-GPOS-00188, SRG-OS-000481-GPOS-00481","checkContent":"Note: This requirement is not applicable for systems that do not have physical wireless network radios.\n\nVerify RHEL 10 disables wireless interfaces on the system with the following command:\n\n$ nmcli device status\nDEVICE                    TYPE            STATE                    CONNECTION\nvirbr0                      bridge         connected             virbr0\nwlp7s0                    wifi              connected            wifiSSID\nenp6s0                    ethernet     disconnected        --\np2p-dev-wlp7s0     wifi-p2p     disconnected        --\nlo                             loopback    unmanaged           --\nvirbr0-nic                tun              unmanaged          --\n\nIf a wireless interface is configured and has not been documented and approved by the information system security officer, this is a finding.","fixText":"Configure RHEL 10 to disable all wireless network interfaces with the following command:\n\n$ nmcli radio all off","ccis":["CCI-001444","CCI-001443","CCI-002421","CCI-002418"]},{"vulnId":"V-281291","ruleId":"SV-281291r1166825_rule","severity":"medium","ruleTitle":"RHEL 10 must disable the graphical user interface automounter unless required.","description":"Automatically mounting file systems permits easy introduction of unknown devices, thereby facilitating malicious activity.\n\nSatisfies: SRG-OS-000114-GPOS-00059, SRG-OS-000378-GPOS-00163","checkContent":"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.\n\nVerify RHEL 10 disables the graphical user interface automount function.\n\nDisable the setting with the following command:\n\n$ gsettings get org.gnome.desktop.media-handling automount-open\nfalse\n\nIf \"automount-open\" is set to \"true\" and is not documented with the information system security officer as an operational requirement, this is a finding.","fixText":"Configure RHEL 10 GNOME to disable automated mount of removable media.\n\nNote: 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.\n\nUpdate the \"/etc/dconf/db/local.d/00-security-settings\" database file with the following lines:\n\n$ sudo vi /etc/dconf/db/local.d/00-security-settings\n\n[org/gnome/desktop/media-handling]\nautomount-open=false\n\nUpdate the dconf system databases:\n\n$ sudo dconf update","ccis":["CCI-000778","CCI-001958"]},{"vulnId":"V-281292","ruleId":"SV-281292r1166828_rule","severity":"low","ruleTitle":"RHEL 10 must disable the graphical user interface autorunner unless required.","description":"Automatically running applications when media is inserted allows for the easy introduction of unknown data, thereby facilitating malicious activity.\n\nSatisfies: SRG-OS-000114-GPOS-00059, SRG-OS-000378-GPOS-00163","checkContent":"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.\n\nVerify RHEL 10 disables the graphical user interface autorun function.\n\nDisable the setting with the following command:\n\n$ gsettings get org.gnome.desktop.media-handling autorun-never\ntrue\n\nIf \"autorun-never\" is set to \"false\" and is not documented with the information system security officer as an operational requirement, this is a finding.","fixText":"Configure RHEL 10 GNOME to disable autorunning of removable media.\n\nNote: 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.\n\nUpdate the \"/etc/dconf/db/local.d/00-security-settings\" database to disable the GUI autorun function:\n\n$ sudo vi /etc/dconf/db/local.d/00-security-settings\n\n[org/gnome/desktop/media-handling]\nautorun-never=true\n\nUpdate the dconf system databases:\n\n$ sudo dconf update","ccis":["CCI-000778","CCI-001958"]},{"vulnId":"V-281293","ruleId":"SV-281293r1166831_rule","severity":"medium","ruleTitle":"RHEL 10 must implement nonexecutable data to protect its memory from unauthorized code execution.","description":"ExecShield uses the segmentation feature on all x86 systems to prevent execution in memory higher than a certain address. It writes an address as a limit in the code segment descriptor, to control where code can be executed, on a per-process basis. When the kernel places a process's memory regions such as the stack and heap higher than this address, the hardware prevents execution in that address range. This is enabled by default on the latest Red Hat and Fedora systems if supported by the hardware.","checkContent":"Verify RHEL 10 implements nonexecutable data to protect its memory from unauthorized code execution.\n\nRun the following command:\n\n$ sudo grep ^flags /proc/cpuinfo | grep -Ev '([^[:alnum:]])(nx)([^[:alnum:]]|$)'\n\nIf any output is returned, this is a finding.\n\nRun the following command:\n\n$ sudo grubby --info=ALL | grep args | grep -E '([^[:alnum:]])(noexec)([^[:alnum:]])'\n\nIf any output is returned, this is a finding.","fixText":"Configure RHEL 10 to implement nonexecutable data to protect its memory from unauthorized code execution.\n\nUpdate the GRUB 2 bootloader configuration.\n\nRun the following command:\n\n$ sudo grubby --update-kernel=ALL --remove-args=noexec","ccis":["CCI-002824"]},{"vulnId":"V-281295","ruleId":"SV-281295r1166837_rule","severity":"medium","ruleTitle":"RHEL 10 must automatically exit interactive command shell user sessions after 15 minutes of inactivity.","description":"Terminating an idle interactive command shell user session within a short time period reduces the window of opportunity for unauthorized personnel to take control of it when left unattended in a virtual terminal or physical console.\n\nSatisfies: SRG-OS-000163-GPOS-00072, SRG-OS-000029-GPOS-00010","checkContent":"Verify RHEL 10 is configured to exit interactive command shell user sessions after 10 minutes of inactivity or less with the following command:\n\n$ sudo grep -i tmout /etc/profile /etc/profile.d/*.sh\n/etc/profile.d/tmout.sh:declare -xr TMOUT=600\n\nIf \"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.","fixText":"Configure RHEL 10 to exit interactive command shell user sessions after 15 minutes of inactivity.\n\nAdd or edit the following line in \"/etc/profile.d/tmout.sh\":\n\n#!/bin/bash\n\ndeclare -xr TMOUT=600","ccis":["CCI-001133","CCI-000057"]},{"vulnId":"V-281296","ruleId":"SV-281296r1184670_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured with a timeout interval for the Secure Shell (SSH) daemon.","description":"Terminating an idle SSH session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle SSH session will also free up resources committed by the managed network element.\n\nTerminating network connections associated with communications sessions includes, for example, deallocating associated TCP/IP address/port pairs at the operating system level and deallocating networking assignments at the application level if multiple application sessions are using a single operating system-level network connection. This does not mean that the operating system terminates all sessions or network access; it only ends the inactive session and releases the resources associated with that session.\n\nRHEL 10 uses \"/etc/ssh/sshd_config\" for configurations of OpenSSH. Within the \"sshd_config\", the product of the values of \"ClientAliveInterval\" and \"ClientAliveCountMax\" are used to establish the inactivity threshold. \n\nThe \"ClientAliveInterval\" is a timeout interval in seconds after which if no data has been received from the client, sshd will send a message through the encrypted channel to request a response from the client. \n\nThe \"ClientAliveCountMax\" is the number of client alive messages that may be sent without sshd receiving any messages back from the client. If this threshold is met, sshd will disconnect the client. \n\nFor more information on these settings and others, refer to the sshd_config man pages.\n\nSatisfies: SRG-OS-000163-GPOS-00072, SRG-OS-000279-GPOS-00109, SRG-OS-000395-GPOS-00175","checkContent":"Verify RHEL 10 is configured with an SSH timeout interval.\n\nVerify the \"ClientAliveInterval\" variable is set to a value of \"600\" or less by performing the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*clientaliveinterval'\n/etc/ssh/sshd_config.d/10-stig.conf::ClientAliveInterval 600\n\nVerify the runtime setting with the following command:\n\n$ sudo sshd -T | grep -i clientaliveinterval\nclientaliveinterval 600\n\nIf 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.","fixText":"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.\n\nNote: This setting must be applied in conjunction with RHEL-10-700660 to function correctly.\n\nIn \"/etc/ssh/sshd_config.d\", create a drop file that will lexicographically precede 50-redhat.conf and add the following line:\n\nClientAliveInterval 600\n\nRestart the SSH daemon with the following command for the changes to take effect:\n\n$ sudo systemctl restart sshd.service","ccis":["CCI-001133","CCI-002361","CCI-002891"]},{"vulnId":"V-281297","ruleId":"SV-281297r1166843_rule","severity":"medium","ruleTitle":"RHEL 10 must not default to the graphical display manager unless approved.","description":"Unnecessary service packages must not be installed to decrease the attack surface of the system. Graphical display managers have a long history of security vulnerabilities and must not be used unless approved and documented.","checkContent":"Verify RHEL 10 is configured to boot to the command line with the following command:\n\n$ systemctl get-default\nmulti-user.target\n\nIf 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.","fixText":"Configure RHEL 10 to boot to the command line by setting the default target to \"multi-user\" with the following command:\n\n$ sudo systemctl set-default multi-user.target","ccis":["CCI-000381"]},{"vulnId":"V-281298","ruleId":"SV-281298r1166846_rule","severity":"high","ruleTitle":"RHEL 10 must disable the systemd Ctrl-Alt-Delete burst key sequence.","description":"A locally logged-on user who presses Ctrl-Alt-Delete when at the console can reboot the system. If accidentally pressed, as could happen in the case of a mixed operating system environment, this can create the risk of short-term loss of availability of systems due to unintentional reboot. \n\nIn a graphical user environment, risk of unintentional reboot from the Ctrl-Alt-Delete sequence is reduced because the user will be prompted before any action is taken.","checkContent":"Verify RHEL 10 is configured to not reboot the system when Ctrl-Alt-Delete is pressed seven times within two seconds with the following command:\n\n$ grep -iR CtrlAltDelBurstAction /etc/systemd/\n/etc/systemd/system.conf:CtrlAltDelBurstAction=none\n\nIf the \"CtrlAltDelBurstAction\" is not set to \"none\", is commented out, or is missing, this is a finding.","fixText":"Configure RHEL 10 to disable the \"CtrlAltDelBurstAction\".\n\nUpdate the \"/etc/systemd/system.conf\" configuration file as follows:\n\n$ sudo vi /etc/systemd/system.conf\n\nCtrlAltDelBurstAction=none\n\nReload the daemon for this change to take effect:\n\n$ sudo systemctl daemon-reload","ccis":["CCI-002235"]},{"vulnId":"V-281299","ruleId":"SV-281299r1166849_rule","severity":"high","ruleTitle":"RHEL 10 must disable the x86 Ctrl-Alt-Delete key sequence.","description":"A locally logged-on user who presses Ctrl-Alt-Delete when at the console can reboot the system. If accidentally pressed, as could happen in the case of a mixed operating system environment, this can create the risk of short-term loss of systems availability due to unintentional reboot. \n\nIn a graphical user environment, risk of unintentional reboot from the Ctrl-Alt-Delete sequence is reduced because the user will be prompted before any action is taken.","checkContent":"Verify RHEL 10 is not configured to reboot the system when Ctrl-Alt-Delete is pressed with the following command:\n\n$ sudo systemctl status ctrl-alt-del.target\no ctrl-alt-del.target\n        Loaded: masked (Reason: Unit ctrl-alt-del.target is masked.)\n        Active: inactive (dead)\n\nIf the \"ctrl-alt-del.target\" is loaded and not masked, this is a finding.","fixText":"Configure RHEL 10 to disable the \"ctrl-alt-del.target\" with the following command:\n\n$ sudo systemctl disable --now ctrl-alt-del.target\n$ sudo systemctl mask --now ctrl-alt-del.target","ccis":["CCI-002235"]},{"vulnId":"V-281300","ruleId":"SV-281300r1167050_rule","severity":"medium","ruleTitle":"RHEL 10 must disable the ability of systemd to spawn an interactive boot process.","description":"Using interactive or recovery boot, the console user could disable auditing, firewalls, or other services, weakening system security.","checkContent":"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:\n\n$ sudo grubby --info=ALL | grep args | grep 'systemd.confirm_spawn'\n\nIf any output is returned, this is a finding.","fixText":"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:\n\n$ sudo grubby --update-kernel=ALL --remove-args=\"systemd.confirm_spawn\"","ccis":["CCI-000381"]},{"vulnId":"V-281301","ruleId":"SV-281301r1184700_rule","severity":"medium","ruleTitle":"RHEL 10 must disable virtual system calls.","description":"System calls are special routines in the Linux kernel, which userspace applications ask to do privileged tasks. Invoking a system call is an expensive operation because the processor must interrupt the currently executing task and switch context to kernel mode and then back to userspace after the system call completes. Virtual system calls map into user space a page that contains some variables and the implementation of some system calls. This allows the system calls to be executed in userspace to alleviate the context-switching expense.\n\nVirtual system calls provide an opportunity of attack for a user who has control of the return instruction pointer. Disabling virtual system calls help to prevent return-oriented programming attacks via buffer overflows and overruns.","checkContent":"Verify RHEL 10 is configured so that the current GRUB 2 configuration disables virtual system calls with the following command:\n\n$ sudo grubby --info=ALL | grep args | grep -v 'vsyscall=none'\n\nIf any output is returned, this is a finding.\n\nCheck that virtual system calls are disabled by default to persist in kernel updates with the following command:\n\n$ sudo grep vsyscall /etc/default/grub\nGRUB_CMDLINE_LINUX=\"vsyscall=none\"\n\nIf \"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.","fixText":"Configure RHEL 10 to disable virtual system calls with the following command:\n\n$ sudo grubby --update-kernel=ALL --args=\"vsyscall=none\"","ccis":["CCI-001084"]},{"vulnId":"V-281302","ruleId":"SV-281302r1167056_rule","severity":"medium","ruleTitle":"RHEL 10 must clear the page allocator to prevent use-after-free attacks.","description":"Poisoning writes an arbitrary value to freed pages, so any modification or reference to that page after being freed or before being initialized will be detected and prevented. This prevents many types of use-after-free vulnerabilities at little performance cost. It also prevents data leakage and detection of corrupted memory.","checkContent":"Verify RHEL 10 is configured so that the current GRUB 2 configuration enables page poisoning to mitigate use-after-free vulnerabilities.\n\nCheck that the current GRUB 2 configuration has page poisoning enabled with the following command:\n\n$ sudo grubby --info=ALL | grep args | grep -v 'page_poison=1'\n\nIf any output is returned, this is a finding.\n\nCheck that page poisoning is enabled by default to persist in kernel updates with the following command:\n\n$ sudo grep page_poison /etc/default/grub\nGRUB_CMDLINE_LINUX=\"page_poison=1\"\n\nIf \"page_poison\" is not set to \"1\", is missing or commented out, this is a finding.","fixText":"Configure RHEL 10 to enable page poisoning with the following commands:\n\n$ sudo grubby --update-kernel=ALL --args=\"page_poison=1\"","ccis":["CCI-001084"]},{"vulnId":"V-281303","ruleId":"SV-281303r1167059_rule","severity":"medium","ruleTitle":"RHEL 10 must clear memory when it is freed to prevent use-after-free attacks.","description":"Some adversaries launch attacks with the intent of executing code in nonexecutable regions of memory or in memory locations that are prohibited. Security safeguards employed to protect memory include, for example, data execution prevention and address space layout randomization. Data execution prevention safeguards can be either hardware-enforced or software-enforced, with hardware providing the greater strength of mechanism.\n\nPoisoning writes an arbitrary value to freed pages, so any modification or reference to that page after being freed or before being initialized will be detected and prevented. This prevents many types of use-after-free vulnerabilities at little performance cost. It also prevents data leakage and detection of corrupted memory.\n\n\"init_on_free\" is a Linux kernel boot parameter that enhances security by initializing memory regions when they are freed, preventing data leakage. This process ensures that stale data in freed memory cannot be accessed by malicious programs.\n\nSLUB canaries add a randomized value (canary) at the end of SLUB-allocated objects to detect memory corruption caused by buffer overflows or underflows. Redzoning adds padding (red zones) around SLUB-allocated objects to detect overflows or underflows by triggering a fault when adjacent memory is accessed. SLUB canaries are often more efficient and provide stronger detection against buffer overflows compared to redzoning. SLUB canaries are supported in hardened Linux kernels such as the ones provided by Linux-hardened.\n\nSLAB objects are blocks of physically contiguous memory. SLUB is the unqueued SLAB allocator.","checkContent":"Verify RHEL 10 is configured so that the current GRUB2 configuration mitigates use-after-free vulnerabilities by employing memory poisoning.\n\nCheck that the current GRUB2 configuration mitigates use-after-free vulnerabilities by employing memory poisoning with the following command:\n\n$ sudo grubby --info=ALL | grep args | grep -v init_on_free=1\n\nIf any output is returned, this is a finding.\n\nCheck that page poisoning is enabled by default to persist in kernel updates with the following command:\n\n$ sudo grep grub_cmdline_linux /etc/default/grub\nGRUB_CMDLINE_LINUX=\"... init_on_free=1\"\n\nIf \"init_on_free=1\" is missing or commented out, this is a finding.","fixText":"Configure RHEL 10 to enable \"init_on_free\" with the following command:\n\n$ sudo grubby --update-kernel=ALL --args=\"init_on_free=1\"","ccis":["CCI-001084"]},{"vulnId":"V-281304","ruleId":"SV-281304r1167062_rule","severity":"medium","ruleTitle":"RHEL 10 must enable mitigations against processor-based vulnerabilities.","description":"Kernel page-table isolation is a kernel feature that mitigates the Meltdown security vulnerability and hardens the kernel against attempts to bypass kernel address space layout randomization (KASLR).\n\nSatisfies: SRG-OS-000433-GPOS-00193, SRG-OS-000095-GPOS-00049","checkContent":"Verify RHEL 10 enables kernel page-table isolation with the following command:\n\n$ sudo grubby --info=ALL | grep args | grep -v 'pti=on'\n\nIf any output is returned, this is a finding.\n\nCheck that kernel page-table isolation is enabled by default to persist in kernel updates:\n\n$ sudo grep pti /etc/default/grub\nGRUB_CMDLINE_LINUX=\"pti=on\"\n\nIf \"pti\" is not set to \"on\", is missing, or is commented out, this is a finding.","fixText":"Configure RHEL 10 to enable kernel page-table isolation with the following command:\n\n$ sudo grubby --update-kernel=ALL --args=\"pti=on\"","ccis":["CCI-002824","CCI-000381"]},{"vulnId":"V-281305","ruleId":"SV-281305r1167065_rule","severity":"medium","ruleTitle":"RHEL 10 must restrict access to the kernel message buffer.","description":"Preventing unauthorized information transfers mitigates the risk of information, including encrypted representations of information, produced by the actions of prior users/roles (or the actions of processes acting on behalf of prior users/roles) from being available to any current users/roles (or current processes) that obtain access to shared system resources (e.g., registers, main memory, hard disks) after those resources have been released back to information systems. The control of information in shared resources is also commonly referred to as object reuse and residual information protection.\n\nThis requirement generally applies to the design of an information technology product, but it can also apply to the configuration of information system components that are, or use, such products. This can be verified by acceptance/validation processes in DOD or other government agencies.\n\nThere may be shared resources with configurable protections (e.g., files in storage) that may be assessed on specific information system components.\n\nRestricting access to the kernel message buffer limits access to only root. This prevents attackers from gaining additional system information as a nonprivileged user.\n\nSatisfies: SRG-OS-000132-GPOS-00067, SRG-OS-000138-GPOS-00069","checkContent":"Verify RHEL 10 is configured to restrict access to the kernel message buffer.\n\nCheck the status of the \"kernel.dmesg_restrict\" kernel parameter with the following command:\n\n$ sudo sysctl kernel.dmesg_restrict\nkernel.dmesg_restrict = 1\n\nIf \"kernel.dmesg_restrict\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to restrict access to the kernel message buffer.\n\nCreate a drop-in if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-dmesg_restrict.conf\n\nAdd the following to the file:\n\nkernel.dmesg_restrict = 1\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-001082","CCI-001090"]},{"vulnId":"V-281306","ruleId":"SV-281306r1167068_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent kernel profiling by nonprivileged users.","description":"Preventing unauthorized information transfers mitigates the risk of information, including encrypted representations of information, produced by the actions of prior users/roles (or the actions of processes acting on behalf of prior users/roles) from being available to any current users/roles (or current processes) that obtain access to shared system resources (e.g., registers, main memory, hard disks) after those resources have been released back to information systems. The control of information in shared resources is also commonly referred to as object reuse and residual information protection.\n\nThis requirement generally applies to the design of an information technology product, but it can also apply to the configuration of information system components that are, or use, such products. This can be verified by acceptance/validation processes in DOD or other government agencies.\n\nThere may be shared resources with configurable protections (e.g., files in storage) that may be assessed on specific information system components.\n\nSetting the \"kernel.perf_event_paranoid\" kernel parameter to \"2\" prevents attackers from gaining additional system information as a nonprivileged user.\n\nSatisfies: SRG-OS-000132-GPOS-00067, SRG-OS-000138-GPOS-00069","checkContent":"Verify RHEL 10 is configured to prevent kernel profiling by nonprivileged users.\n\nCheck the status of the \"kernel.perf_event_paranoid\" kernel parameter:\n\n$ sudo sysctl kernel.perf_event_paranoid\nkernel.perf_event_paranoid = 2\n\nIf \"kernel.perf_event_paranoid\" is not set to \"2\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to prevent kernel profiling by nonprivileged users.\n\nCreate a drop-in if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-kernel_perf_event_paranoid.conf\n\nAdd the following to the file:\n\nkernel.perf_event_paranoid = 2\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-001082","CCI-001090"]},{"vulnId":"V-281307","ruleId":"SV-281307r1184629_rule","severity":"high","ruleTitle":"RHEL 10 must prevent the loading of a new kernel for later execution.","description":"Changes to any software components can have significant effects on the overall security of the operating system. This requirement ensures the software has not been tampered with and has been provided by a trusted vendor.\n\nDisabling kexec_load prevents an unsigned kernel image (that could be a windows kernel or modified vulnerable kernel) from being loaded. Kexec can be used to subvert the entire secureboot process and should be avoided at all costs, especially because it can load unsigned kernel images.","checkContent":"Verify RHEL 10 is configured to disable kernel image loading.\n\nCheck the status of the \"kernel.kexec_load_disabled\" kernel parameter with the following command:\n\n$ sudo sysctl kernel.kexec_load_disabled\nkernel.kexec_load_disabled = 1\n\nIf \"kernel.kexec_load_disabled\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to disable kernel image loading.\n\nCreate a drop-in if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-kernel_kexec_load_disabled.conf\n\nAdd the following to the file:\n\nkernel.kexec_load_disabled = 1\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-003992"]},{"vulnId":"V-281308","ruleId":"SV-281308r1167074_rule","severity":"medium","ruleTitle":"RHEL 10 must restrict exposed kernel pointer address access.","description":"Exposing kernel pointers (through procfs or \"seq_printf()\") exposes kernel writable structures, which may contain functions pointers. If a write vulnerability occurs in the kernel, allowing write access to any of this structure, the kernel can be compromised. This option disallows any program without the CAP_SYSLOG capability to get the addresses of kernel pointers by replacing them with \"0\".\n\nSatisfies: SRG-OS-000132-GPOS-00067, SRG-OS-000433-GPOS-00192","checkContent":"Verify RHEL 10 is configured to restrict exposed kernel pointer address access.\n\nVerify the runtime status of the \"kernel.kptr_restrict\" kernel parameter with the following command:\n\n$ sudo sysctl kernel.kptr_restrict \nkernel.kptr_restrict = 1\n\nIf \"kernel.kptr_restrict\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to restrict exposed kernel pointer address access.\n\nCreate a drop-in if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-kernel_kptr_restrict.conf\n\nAdd the following to the file:\n\nkernel.kptr_restrict = 1\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-001082","CCI-002824"]},{"vulnId":"V-281309","ruleId":"SV-281309r1184631_rule","severity":"medium","ruleTitle":"RHEL 10 must enable kernel parameters to enforce discretionary access control (DAC) on hardlinks.","description":"By enabling the \"fs.protected_hardlinks\" kernel parameter, users can no longer create soft or hard links to files they do not own. Disallowing such hardlinks mitigates vulnerabilities based on insecure file systems accessed by privileged programs, avoiding an exploitation vector exploiting unsafe use of open() or creat().\n\nSatisfies: SRG-OS-000312-GPOS-00122, SRG-OS-000312-GPOS-00123, SRG-OS-000324-GPOS-00125","checkContent":"Verify RHEL 10 is configured to enable DAC on hardlinks.\n\nCheck the status of the \"fs.protected_hardlinks\" kernel parameter with the following command:\n\n$ sudo sysctl fs.protected_hardlinks\nfs.protected_hardlinks = 1\n\nIf \"fs.protected_hardlinks\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to enable DAC on hardlinks.\n\nCreate a drop-in if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-fs_protected_hardlinks.conf\n\nAdd the following to the file:\n\nfs.protected_hardlinks = 1\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002165","CCI-002235"]},{"vulnId":"V-281310","ruleId":"SV-281310r1167080_rule","severity":"medium","ruleTitle":"RHEL 10 must enable kernel parameters to enforce discretionary access control (DAC) on symlinks.","description":"By enabling the \"fs.protected_symlinks\" kernel parameter, symbolic links are permitted to be followed only when outside a sticky world-writable directory, or when the user identifier (UID) of the link and follower match, or when the directory owner matches the symlink's owner. Disallowing such symlinks helps mitigate vulnerabilities based on insecure file systems accessed by privileged programs, avoiding an exploitation vector exploiting unsafe use of open() or creat().\n\nSatisfies: SRG-OS-000312-GPOS-00122, SRG-OS-000312-GPOS-00123, SRG-OS-000324-GPOS-00125","checkContent":"Verify RHEL 10 is configured to enable DAC on symlinks.\n\nCheck the status of the \"fs.protected_symlinks\" kernel parameter with the following command:\n\n$ sudo sysctl fs.protected_symlinks\nfs.protected_symlinks = 1\n\nIf \"fs.protected_symlinks\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to enable DAC on symlinks with the following:\n\nCreate a drop-in if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-fs_protected_symlinks.conf\n\nAdd the following to the file:\n\nfs.protected_symlinks = 1\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002165","CCI-002235"]},{"vulnId":"V-281311","ruleId":"SV-281311r1167083_rule","severity":"medium","ruleTitle":"RHEL 10 must disable the \"kernel.core_pattern\".","description":"A core dump includes a memory image taken at the time the operating system terminates an application. The memory image could contain sensitive data and is generally useful only for developers trying to debug problems.","checkContent":"Verify RHEL 10 disables storing core dumps.\n\nCheck the status of the \"kernel.core_pattern\" kernel parameter with the following command:\n\n$ sudo sysctl kernel.core_pattern\nkernel.core_pattern = |/bin/false\n\nIf \"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.","fixText":"Configure RHEL 10 to disable storing core dumps. \n\nCreate a drop-in if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-kernel_core_pattern.conf\n\nAdd the following to the file:\n\nkernel.core_pattern = |/bin/false\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-000381"]},{"vulnId":"V-281312","ruleId":"SV-281312r1167086_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured to disable the Controller Area Network (CAN) kernel module.","description":"Disabling CAN protects the system against exploitation of any flaws in its implementation.","checkContent":"Verify RHEL 10 disables the ability to load the CAN kernel module with the following command:\n\n$ sudo grep -rs can /etc/modprobe.conf /etc/modprobe.d/* | grep -v '#'\n/etc/modprobe.d/can.conf:install can /bin/false\n/etc/modprobe.d/can.conf:blacklist can\n\nIf 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.","fixText":"Configure RHEL 10 to disable the ability to load the CAN kernel module.\n\nCreate a drop-in if it does not already exist:\n\n$ sudo vi /etc/modprobe.d/can.conf\n\nAdd the following lines to the file:\n\ninstall can /bin/false\nblacklist can","ccis":["CCI-000381"]},{"vulnId":"V-281313","ruleId":"SV-281313r1184770_rule","severity":"medium","ruleTitle":"RHEL 10 must disable the Stream Control Transmission Protocol (SCTP) kernel module.","description":"It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore, may remain unsecured. They increase the risk to the platform by providing additional attack vectors.\n\nFailing to disconnect unused protocols can result in a system compromise.\n\nThe SCTP is a transport layer protocol, designed to support the idea of message-oriented communication, with several streams of messages within one connection. Disabling SCTP protects the system against exploitation of any flaws in its implementation.","checkContent":"Verify RHEL 10 disables the ability to load the sctp kernel module with the following command:\n\n$ sudo grep -rs sctp /etc/modprobe.conf /etc/modprobe.d/* | grep -v '#'\n/etc/modprobe.d/sctp-blacklist.conf:install sctp /bin/false\n/etc/modprobe.d/sctp-blacklist.conf:blacklist sctp\n\nIf 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.","fixText":"Configure RHEL 10 to disable the ability to load the sctp kernel module.\n\nCreate a drop-in if it does not already exist:\n\n$ sudo vi /etc/modprobe.d/sctp.conf\n\nAdd the following lines to the file:\n\ninstall sctp /bin/false\nblacklist sctp","ccis":["CCI-000381"]},{"vulnId":"V-281314","ruleId":"SV-281314r1184771_rule","severity":"medium","ruleTitle":"RHEL 10 must disable the Transparent Inter Process Communication (TIPC) kernel module.","description":"It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore, may remain unsecured. They increase the risk to the platform by providing additional attack vectors.\n\nFailing to disconnect unused protocols can result in a system compromise.\n\nThe TIPC is a protocol that is specially designed for intra-cluster communication. It can be configured to transmit messages either on User Datagram Protocol (UDP) or directly across Ethernet. Message delivery is sequence guaranteed, loss free, and flow controlled. Disabling TIPC protects the system against exploitation of any flaws in its implementation.","checkContent":"Verify RHEL 10 disables the ability to load the tipc kernel module with the following command:\n\n$ sudo grep -rs tipc /etc/modprobe.conf /etc/modprobe.d/* | grep -v '#'\n/etc/modprobe.d/tipc-blacklist.conf:install tipc /bin/false\n/etc/modprobe.d/tipc-blacklist.conf:blacklist tipc\n\nIf 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.","fixText":"Configure RHEL 10 to disable the ability to load the tipc kernel module.\n\nCreate a drop-in if it does not already exist:\n\n$ sudo vi /etc/modprobe.d/tipc.conf\n\nAdd the following lines to the file:\n\ninstall tipc /bin/false\nblacklist tipc","ccis":["CCI-000381"]},{"vulnId":"V-281315","ruleId":"SV-281315r1167095_rule","severity":"medium","ruleTitle":"RHEL 10 must implement address space layout randomization (ASLR) to protect its memory from unauthorized code execution.","description":"ASLR makes it more difficult for an attacker to predict the location of attack code they have introduced into a process's address space during an attempt at exploitation. Additionally, ASLR makes it more difficult for an attacker to know the location of existing code to repurpose it using return-oriented programming techniques.","checkContent":"Verify RHEL 10 is implementing ASLR.\n\nCheck the status of the \"kernel.randomize_va_space\" kernel parameter with the following command:\n\n$ sudo sysctl kernel.randomize_va_space\nkernel.randomize_va_space = 2\n\nIf \"kernel.randomize_va_space\" is not set to \"2\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to implement ASLR.\n\nCreate the drop-in if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-kernel_randomize_va_space.conf\n\nAdd the following line to the file:\n\nkernel.randomize_va_space = 2\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002824"]},{"vulnId":"V-281316","ruleId":"SV-281316r1167098_rule","severity":"medium","ruleTitle":"RHEL 10 must restrict usage of ptrace to descendant processes.","description":"Unrestricted usage of ptrace allows compromised binaries to run ptrace on other processes of the user. The attacker can then steal sensitive information from the target processes (e.g., SSH sessions, web browser, etc.) without any additional assistance from the user (i.e., without resorting to phishing).","checkContent":"Verify RHEL 10 restricts the usage of ptrace to descendant processes.\n\nCheck the status of the \"kernel.yama.ptrace_scope\" kernel parameter with the following command:\n\n$ sysctl kernel.yama.ptrace_scope\nkernel.yama.ptrace_scope = 1\n\nIf the network parameter \"kernel.yama.ptrace_scope\" is not equal to \"1\", or nothing is returned, this is a finding.","fixText":"Configure RHEL 10 to restrict the usage of ptrace to descendant processes.\n\nCreate the drop-in if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-kernel_yama.ptrace_scope.conf\n\nAdd the following line to the file:\n\nkernel.yama.ptrace_scope = 1\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-001082"]},{"vulnId":"V-281317","ruleId":"SV-281317r1167101_rule","severity":"medium","ruleTitle":"RHEL 10 must disable core dump backtraces.","description":"A core dump includes a memory image taken at the time the operating system terminates an application. The memory image could contain sensitive data and is generally useful only for developers or system operators trying to debug problems.\n\nEnabling core dumps on production systems is not recommended; however, there may be overriding operational requirements to enable advanced debugging. Permitting temporary enablement of core dumps during such situations must be reviewed through local needs and policy.","checkContent":"Note: If kernel dumps are disabled in accordance with RHEL-10-701090, this requirement is not applicable.\n\nVerify RHEL 10 disables core dump backtraces by issuing the following command:\n\n$ sudo grep -ir ProcessSizeMax /etc/systemd/ | grep -v '#'\n/etc/systemd/coredump.conf:ProcessSizeMax=0\n\nIf 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.","fixText":"Configure RHEL 10 to disable core dump backtraces.\n\nCreate or edit the setting in a drop-in configuration file:\n\n$ sudo vi /etc/systemd/coredump.conf:\n\nAdd the following line:\n\nProcessSizeMax=0","ccis":["CCI-000381"]},{"vulnId":"V-281318","ruleId":"SV-281318r1167104_rule","severity":"medium","ruleTitle":"RHEL 10 must disable storing core dumps.","description":"A core dump includes a memory image taken at the time the operating system terminates an application. The memory image could contain sensitive data and is generally useful only for developers or system operators trying to debug problems. \n\nEnabling core dumps on production systems is not recommended; however, there may be overriding operational requirements to enable advanced debugging. Permitting temporary enablement of core dumps during such situations must be reviewed through local needs and policy.","checkContent":"Note: If kernel dumps are disabled in accordance with RHEL-10-701090, this requirement is not applicable.\n\nVerify RHEL 10 disables storing core dumps for all users by issuing the following command:\n\n$ sudo grep -ir storage /etc/systemd/ | grep -v '#'\n/etc/systemd/coredump.conf:Storage=none\n\nIf 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.","fixText":"Configure RHEL 10 to disable storing core dumps for all users.\n\nCreate or edit the setting in a drop-in configuration file:\n\n$ sudo vi /etc/systemd/coredump.conf\n\nAdd the following line:\n\nStorage=none","ccis":["CCI-000381"]},{"vulnId":"V-281319","ruleId":"SV-281319r1184633_rule","severity":"medium","ruleTitle":"RHEL 10 must disable core dumps for all users.","description":"A core dump includes a memory image taken at the time the operating system terminates an application. The memory image could contain sensitive data and is generally useful only for developers trying to debug problems.","checkContent":"Note: If kernel dumps are disabled in accordance with RHEL-10-701090, this requirement is not applicable.\n\nVerify RHEL 10 disables core dumps for all users by issuing the following command:\n\n$ sudo grep -r core /etc/security/ | grep -v '#'\n/etc/security/limits.d/core_dumps.conf:* hard core 0\n\nThis can be set as a global domain (with the * wildcard) but may be set differently for multiple domains.\n\nIf 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.","fixText":"Configure RHEL 10 to disable core dumps for all users.\n\nCreate or edit the setting in a drop-in configuration file:\n\n$ sudo vi /etc/security/limits.d/core_dumps.conf\n\nAdd the following line:\n\n* hard core 0\n\nRemove any entries for users or groups with a value set to anything other than \"0\".","ccis":["CCI-000381"]},{"vulnId":"V-281320","ruleId":"SV-281320r1184635_rule","severity":"medium","ruleTitle":"RHEL 10 must disable acquiring, saving, and processing core dumps.","description":"A core dump includes a memory image taken at the time the operating system terminates an application. The memory image could contain sensitive data and is generally useful only for developers trying to debug problems.","checkContent":"Note: If kernel dumps are disabled in accordance with RHEL-10-701090, this requirement is not applicable.\n\nVerify RHEL 10 is not configured to acquire, save, or process core dumps with the following command:\n\n$ sudo systemctl status systemd-coredump.socket\no systemd-coredump.socket\n    Loaded: masked (Reason: Unit systemd-coredump.socket is masked.)\n    Active: inactive (dead)\n    ...\n\nIf 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.","fixText":"Configure RHEL 10 to disable the systemd-coredump.socket with the following command:\n\n$ sudo systemctl mask --now systemd-coredump.socket\nCreated symlink /etc/systemd/system/systemd-coredump.socket -> /dev/null\n\nReload the daemon for this change to take effect.\n\n$ sudo systemctl daemon-reload","ccis":["CCI-002165"]},{"vulnId":"V-281321","ruleId":"SV-281321r1167113_rule","severity":"medium","ruleTitle":"RHEL 10 must implement nonexecutable data to protect its memory from unauthorized code execution.","description":"ExecShield uses the segmentation feature on all x86 systems to prevent execution in memory higher than a certain address. It writes an address as a limit in the code segment descriptor, to control where code can be executed, on a per-process basis. When the kernel places a process's memory regions, such as the stack and heap, higher than this address, the hardware prevents execution in that address range. This is enabled by default on the latest Red Hat and Fedora systems if supported by the hardware.\n\nChecking \"dmesg\" will return a false-positive if the system has generated enough kernel messages that the \"(Execute Disable) protection: active\" line is no longer present in the output from \"dmesg(1)\". A better way to ensure that ExecShield is enabled is to first ensure all processors support the NX feature, and then to check that \"noexec\" was not passed to the kernel command line.","checkContent":"Verify RHEL 10 enables ExecShield.\n\nRun the following command:\n\n$ sudo grep ^flags /proc/cpuinfo | grep -Ev '([^[:alnum:]])(nx)([^[:alnum:]]|$)'\n\nIf any output is returned, this is a finding.\n\nRun the following command:\n\n$ sudo grubby --info=ALL | grep args | grep -E '([^[:alnum:]])(noexec)([^[:alnum:]])'\n\nIf any output is returned, this is a finding.","fixText":"Configure RHEL 10 to enable ExecShield.\n\nIf \"/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.\n\nIf the \"noexec\" option is present on the kernel command line, update the GRUB 2 bootloader configuration to remove it by running the following command:\n\n$ sudo grubby --update-kernel=ALL --remove-args=noexec","ccis":["CCI-002824"]},{"vulnId":"V-281322","ruleId":"SV-281322r1167116_rule","severity":"medium","ruleTitle":"RHEL 10 must disable the kdump service.","description":"Kernel core dumps may contain the full contents of system memory at the time of the crash. Kernel core dumps consume a considerable amount of disk space and may result in denial of service by exhausting the available space on the target file system partition. Unless the system is used for kernel development or testing, there is little need to run the kdump service.","checkContent":"Verify RHEL 10 disables the kdump service in system boot configuration with the following command:\n\n$ sudo systemctl is-enabled  kdump\nmasked\n\nVerify the kdump service is not active (i.e., not running) through current runtime configuration with the following command:\n\n$ sudo systemctl is-active kdump\nfailed\n\nVerify the kdump service is masked with the following command:\n\n$ sudo systemctl show  kdump  | grep \"LoadState\\|UnitFileState\"\nLoadState=masked\nUnitFileState=masked\n\nIf the \"kdump\" service is loaded or active and is not masked, this is a finding.","fixText":"Configure RHEL 10 to disable and mask the kdump service.\n\nTo disable the kdump service, run the following command:\n\n$ sudo systemctl disable --now kdump\nRemoved '/etc/systemd/system/multi-user.target.wants/kdump.service'.\n\nTo mask the kdump service, run the following command:\n\n$ sudo systemctl mask --now kdump\nCreated symlink '/etc/systemd/system/kdump.service' ? '/dev/null'.","ccis":["CCI-001665"]},{"vulnId":"V-281323","ruleId":"SV-281323r1167119_rule","severity":"medium","ruleTitle":"RHEL 10 must disable file system automount function unless required.","description":"An authentication process resists replay attacks if it is impractical to achieve a successful authentication by recording and replaying a previous authentication message.\n\nSatisfies: SRG-OS-000114-GPOS-00059, SRG-OS-000378-GPOS-00163","checkContent":"Note: If the \"autofs\" service is not installed, this requirement is not applicable.\n\nVerify RHEL 10 is configured so that the file system automount function has been disabled with the following command:\n\n$ systemctl is-enabled  autofs\nmasked\n\nIf the returned value is not \"masked\", \"disabled\", or \"not-found\" and is not documented as an operational requirement with the information system security officer, this is a finding.","fixText":"Configure RHEL 10 to disable the ability to automount devices.\n\nThe \"autofs\" service can be disabled with the following command:\n\n$ sudo systemctl mask --now autofs.service","ccis":["CCI-000778","CCI-001958"]},{"vulnId":"V-281324","ruleId":"SV-281324r1167122_rule","severity":"medium","ruleTitle":"RHEL 10 must enable certificate-based smart card authentication.","description":"Without the use of multifactor authentication, the ease of access to privileged functions is greatly increased. Multifactor authentication requires using two or more factors to achieve authentication. A privileged account is defined as an information system account with authorizations of a privileged user. The DOD Common Access Card (CAC) with DOD-approved public key infrastructure (PKI) is an example of multifactor authentication.\n\nSatisfies: SRG-OS-000375-GPOS-00160, SRG-OS-000105-GPOS-00052, SRG-OS-000106-GPOS-00053, SRG-OS-000107-GPOS-00054, SRG-OS-000108-GPOS-00055","checkContent":"Note: If the system administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable.\n\nVerify RHEL 10 enables smart cards in the System Security Services Daemon (SSSD) with the following command:\n\n$ sudo grep -ir pam_cert_auth /etc/sssd/sssd.conf /etc/sssd/conf.d/\n/etc/sssd/conf.d/sssd.conf:pam_cert_auth = True\n\nIf \"pam_cert_auth\" is not set to \"True\", the line is commented out, or the line is missing, this is a finding.","fixText":"Configure RHEL 10 to enable certificate-based smart card authentication.\n\nEdit the file \"/etc/sssd/sssd.conf\" or a configuration file in \"/etc/sssd/conf.d\" and add or edit the following line:\n\npam_cert_auth = True","ccis":["CCI-004046","CCI-000765","CCI-000766"]},{"vulnId":"V-281325","ruleId":"SV-281325r1184772_rule","severity":"medium","ruleTitle":"RHEL 10 must implement certificate status checking for multifactor authentication.","description":"Using an authentication device, such as a DOD common access card (CAC) or token that is separate from the information system, ensures that even if the information system is compromised, credentials stored on the authentication device will not be affected.\n\nMultifactor solutions that require devices separate from information systems gaining access include, for example, hardware tokens providing time-based or challenge-response authenticators and smart cards such as the U.S. Government Personal Identity Verification (PIV) card and the DOD CAC.\n\nRHEL 10 includes multiple options for configuring certificate status checking but for this requirement focuses on the System Security Services Daemon (SSSD). By default, SSSD performs Online Certificate Status Protocol (OCSP) checking and certificate verification using a sha256 digest function.\n\nSatisfies: SRG-OS-000375-GPOS-00160, SRG-OS-000377-GPOS-00162, SRG-OS-000705-GPOS-00150","checkContent":"Note: If the system administrator (SA) demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable.\n\nVerify RHEL 10 implements OCSP and is using the proper digest value on the system with the following command:\n\n$ sudo grep -irs certificate_verification /etc/sssd/sssd.conf /etc/sssd/conf.d/ | grep -v \"^#\"\n/etc/sssd/conf.d/certificate_verification.conf:certificate_verification = ocsp_dgst=sha512\n\nIf 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. \n\nIf there is no evidence of certificate status checking being used, this is a finding.","fixText":"Configure RHEL 10 to implement certificate status checking for multifactor authentication.\n\nReview the \"/etc/sssd/conf.d/certificate_verification.conf\" file to determine if the system is configured to prevent OCSP or certificate verification.\n\nAdd the following line to the [sssd] section of the \"/etc/sssd/conf.d/certificate_verification.conf\" file:\n\ncertificate_verification = ocsp_dgst=sha512\n\nSet the correct ownership and permissions on the \"/etc/sssd/conf.d/certificate_verification.conf\" file by running these commands:\n\n$ sudo chown root:root \"/etc/sssd/conf.d/certificate_verification.conf\"\n$ sudo chmod 600 \"/etc/sssd/conf.d/certificate_verification.conf\"\n\nRestart the \"sssd\" service with the following command for the changes to take effect: \n\n$ sudo systemctl restart sssd.service","ccis":["CCI-004046","CCI-001954","CCI-004047"]},{"vulnId":"V-281326","ruleId":"SV-281326r1184637_rule","severity":"medium","ruleTitle":"RHEL 10 must, for PKI-based authentication, enforce authorized access to the corresponding private key.","description":"If the private key is discovered, an attacker can use the key to authenticate as an authorized user and gain access to the network infrastructure.\n\nThe cornerstone of the PKI is the private key used to encrypt or digitally sign information.\n\nIf the private key is stolen, this will lead to the compromise of the authentication and nonrepudiation gained through PKI because the attacker can use the private key to digitally sign documents and pretend to be the authorized user.\n\nBoth the holders of a digital certificate and the issuing authority must protect the computers, storage devices, or whatever they use to keep the private keys.","checkContent":"Note: If the system administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable.\n\nVerify RHEL 10 SSH private key files have a passcode.\n\nFor each private key stored on the system, use the following command:\n\n$ sudo ssh-keygen -y -f /path/to/file\n\nThe expected output is a password prompt:\n \"Enter passphrase:\"\n\nIf the password prompt is not displayed, and the contents of the key are displayed, this is a finding.","fixText":"Configure RHEL 10, for PKI-based authentication, enforces authorized access to the corresponding private key.\n\nCreate a new private and public key pair that uses a passcode with the following command:\n\n$ sudo ssh-keygen -N [passphrase]","ccis":["CCI-000186"]},{"vulnId":"V-281327","ruleId":"SV-281327r1167131_rule","severity":"medium","ruleTitle":"RHEL 10 must require authentication to access emergency mode.","description":"To mitigate the risk of unauthorized access to sensitive information by entities that have been issued certificates by DOD-approved PKIs, all DOD systems (e.g., web servers and web portals) must be properly configured to incorporate access control methods that do not rely solely on the possession of a certificate for access. \n\nSuccessful authentication must not automatically give an entity access to an asset or security boundary. Authorization procedures and controls must be implemented to ensure each authenticated entity also has a validated and current authorization. Authorization is the process of determining whether an entity, once authenticated, is permitted to access a specific asset. Information systems use access control policies and enforcement mechanisms to implement this requirement.\n\nThis requirement prevents attackers with physical access from trivially bypassing security on the machine and gaining root access. Such accesses are further prevented by configuring the bootloader password.","checkContent":"Verify RHEL 10 requires authentication for emergency mode with the following command:\n\n$ sudo grep systemd-sulogin /usr/lib/systemd/system/emergency.service \n# ExecStart=-/usr/lib/systemd/systemd-sulogin-shell emergency\n\nIf the line is not returned from the default \"systemd\" file, use the following command to look for modifications to \"emergency.service\":\n\n$ sudo grep systemd-sulogin /etc/systemd/system/emergency.service.d/*.conf \nExecStart=-/usr/lib/systemd/systemd-sulogin-shell emergency\n\nIf the line is not returned from either location, this is a finding.\n\nNote: The configuration setting can be in either the default location or the drop-in file but not in both locations.","fixText":"Configure RHEL 10 to require authentication for emergency mode.\n\nCreate a directory for supplementary configuration files: \n\n$ sudo mkdir /etc/systemd/system/emergency.service.d/\n\nCopy the original \"emergency.service\" file to the new directory with:\n\n$ sudo cp  /usr/lib/systemd/system/emergency.service  /etc/systemd/system/emergency.service.d/emergency.service.conf\n\nOpen the new file:\n\n$ sudo vi /etc/systemd/system/emergency.service.d/emergency.service.conf\n\nAdd or modify the following line in the new file:\n\nExecStart=-/usr/lib/systemd/systemd-sulogin-shell emergency\n\nComment out or remove the ExecStart and ExecStartPre lines in \"/usr/lib/systemd/system/emergency.service\" as they can only exist in one location.\n\nApply changes to unit files without rebooting the system:\n\n$ sudo systemctl daemon-reload","ccis":["CCI-000213"]},{"vulnId":"V-281328","ruleId":"SV-281328r1167134_rule","severity":"medium","ruleTitle":"RHEL 10 must require authentication to access single-user mode.","description":"To mitigate the risk of unauthorized access to sensitive information by entities that have been issued certificates by DOD-approved PKIs, all DOD systems (e.g., web servers and web portals) must be properly configured to incorporate access control methods that do not rely solely on the possession of a certificate for access. \n\nSuccessful authentication must not automatically give an entity access to an asset or security boundary. Authorization procedures and controls must be implemented to ensure each authenticated entity also has a validated and current authorization. Authorization is the process of determining whether an entity, once authenticated, is permitted to access a specific asset. Information systems use access control policies and enforcement mechanisms to implement this requirement.\n\nThis requirement prevents attackers with physical access from trivially bypassing security on the machine and gaining root access. Such accesses are further prevented by configuring the bootloader password.","checkContent":"Verify RHEL 10 requires authentication for single-user mode with the following command:\n\n$ sudo grep systemd-sulogin /usr/lib/systemd/system/rescue.service\n# ExecStart=-/usr/lib/systemd/systemd-sulogin-shell rescue\n\nIf the line is not returned from the default \"systemd\" file, use the following command to look for modifications to \"rescue.service\":\n\n$ sudo grep systemd-sulogin /etc/systemd/system/rescue.service.d/*.conf \nExecStart=-/usr/lib/systemd/systemd-sulogin-shell rescue\n\nIf the line is not returned from either location, this is a finding.\n\nNote: The configuration setting can be in either the default location or the drop-in file but not in both locations.","fixText":"Configure RHEL 10 to require authentication for single-user mode.\n\nCreate a directory for supplementary configuration files: \n\n$ sudo mkdir /etc/systemd/system/rescue.service.d/\n\nCopy the original \"rescue.service\" file to the new directory with:\n\n$ sudo cp  /usr/lib/systemd/system/rescue.service  /etc/systemd/system/rescue.service.d/rescue.service.conf\n\nOpen the new file:\n\n$ sudo vi /etc/systemd/system/rescue.service.d/rescue.service.conf\n\nAdd or modify the following line in the new file:\n\nExecStart=-/usr/lib/systemd/systemd-sulogin-shell rescue\n\nComment out or remove the \"ExecStart\" and \"ExecStartPre\" lines in \"/usr/lib/systemd/system/rescue.service\" as they can only exist in one location.\n\nApply changes to unit files without rebooting the system:\n\n$ sudo systemctl daemon-reload","ccis":["CCI-000213"]},{"vulnId":"V-281329","ruleId":"SV-281329r1195452_rule","severity":"medium","ruleTitle":"RHEL 10 must, for PKI-based authentication, validate certificates by constructing a certification path (which includes status information) to an accepted trust anchor.","description":"Without path validation, an informed trust decision by the relying party cannot be made when presented with any certificate not already explicitly trusted.\n\nA trust anchor is an authoritative entity represented via a public key and associated data. It is used in the context of public key infrastructures, X.509 digital certificates, and Domain Name System Security Extensions (DNSSEC).\n\nWhen there is a chain of trust, usually the top entity to be trusted becomes the trust anchor; it can be, for example, a certification authority (CA). A certification path starts with the subject certificate and proceeds through a number of intermediate certificates up to a trusted root certificate, typically issued by a trusted CA.\n\nThis requirement verifies that a certification path to an accepted trust anchor is used for certificate validation and that the path includes status information. Path validation is necessary for a relying party to make an informed trust decision when presented with any certificate not already explicitly trusted. Status information for certification paths includes certificate revocation lists or online certificate status protocol responses. Validation of the certificate status information is out of scope for this requirement.\n\nSatisfies: SRG-OS-000066-GPOS-00034, SRG-OS-000384-GPOS-00167, SRG-OS-000775-GPOS-00230, SRG-OS-000780-GPOS-00240","checkContent":"Note: If the system administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable.\n\nVerify RHEL 10, for PKI-based authentication, has valid certificates by constructing a certification path (which includes status information) to an accepted trust anchor.\n\nCheck that the system has a valid DOD root CA installed with the following command:\n\n$ sudo openssl x509 -text -in /etc/sssd/pki/sssd_auth_ca_db.pem\nCertificate:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 1 (0x1)\n        Signature Algorithm: sha256WithRSAEncryption\n        Issuer: C = US, O = U.S. Government, OU = DoD, OU = PKI, CN = DoD Root CA 3\n        Validity\n        Not Before: Mar 20 18:46:41 2012 GMT\n        Not After: Dec 30 18:46:41 2029 GMT\n        Subject: C = US, O = U.S. Government, OU = DoD, OU = PKI, CN = DoD Root CA 3\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n\nIf the root CA file is not a DOD-issued certificate with a valid date and installed in the \"/etc/sssd/pki/sssd_auth_ca_db.pem\" location, this is a finding.","fixText":"Configure RHEL 10, for PKI-based authentication, to validate certificates by constructing a certification path (which includes status information) to an accepted trust anchor.\n\nObtain a valid copy of the DOD root CA file from the PKI CA certificate bundle from cyber.mil and copy the DoD_PKE_CA_chain.pem into the following file:\n\n/etc/sssd/pki/sssd_auth_ca_db.pem","ccis":["CCI-000185","CCI-004068","CCI-004909","CCI-004910"]},{"vulnId":"V-281330","ruleId":"SV-281330r1167140_rule","severity":"medium","ruleTitle":"RHEL 10 must map the authenticated identity to the user or group account for public key infrastructure (PKI)-based authentication.","description":"Without mapping the certificate used to authenticate to the user account, the ability to determine the identity of the individual user or group will not be available for forensic analysis.","checkContent":"Note: If the system administrator (SA) demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable.\n\nVerify RHEL 10 maps the authenticated identity to the user or group account for PKI-based authentication.\n\nVerify the certificate of the user or group is mapped to the corresponding user or group in the \"sssd.conf\" file with the following command:\n\n$ sudo find /etc/sssd/sssd.conf /etc/sssd/conf.d/ -type f -exec cat {} \\;\n[certmap/testing.test/rule_name]\nmatchrule =<SAN>.*EDIPI@mil\nmaprule = (userCertificate;binary={cert!bin})\ndomains = testing.test\n\nIf the certmap section does not exist, ask the SA to indicate how certificates are mapped to accounts.\n\nIf there is no evidence of certificate mapping, this is a finding.","fixText":"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:\n\n[certmap/testing.test/rule_name]\nmatchrule = .*EDIPI@mil\nmaprule = (userCertificate;binary={cert!bin})\ndomains = testing.test\n\nRestart the \"sssd\" service with the following command for the changes to take effect:\n\n$ sudo systemctl restart sssd.service","ccis":["CCI-000187"]},{"vulnId":"V-281331","ruleId":"SV-281331r1167143_rule","severity":"medium","ruleTitle":"RHEL 10 must prohibit the use of cached authenticators after one day.","description":"If cached authentication information is out of date, the validity of the authentication information may be questionable.","checkContent":"Verify RHEL 10 System Security Services Daemon (SSSD) prohibits the use of cached authentications after one day with the following command:\n\nNote: Cached authentication settings should be configured even if smart card authentication is not used on the system.\n\nDetermine if SSSD allows cached authentications with the following command:\n\n$ sudo grep -irs cache_credentials /etc/sssd/sssd.conf /etc/sssd/conf.d/ | grep -v \"^#\"\ncache_credentials = true\n\nIf \"cache_credentials\" is set to \"false\" or missing from the configuration file, this is not a finding and no further checks are required.\n\nIf \"cache_credentials\" is set to \"true\", check that SSSD prohibits the use of cached authentications after one day with the following command:\n\n$ sudo grep -irs offline_credentials_expiration /etc/sssd/sssd.conf /etc/sssd/conf.d/ | grep -v \"^#\"\noffline_credentials_expiration = 1\n\nIf \"offline_credentials_expiration\" is not set to a value of \"1\", this is a finding.","fixText":"Configure RHEL 10 SSSD to prohibit the use of cached authentications after one day.\n\nEdit 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]:\n\noffline_credentials_expiration = 1\n\nRestart the \"sssd\" service with the following command for the changes to take effect: \n\n$ sudo systemctl restart sssd.service","ccis":["CCI-002007"]},{"vulnId":"V-281332","ruleId":"SV-281332r1167146_rule","severity":"medium","ruleTitle":"RHEL 10 must control remote access methods.","description":"To prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems.\n\nOperating systems are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., VPN and IPS); however, doing so increases risk over limiting the services provided by one component.\n\nTo support the requirements and principles of least functionality, the operating system must support the organizational requirements, providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business.\n\nSatisfies: SRG-OS-000096-GPOS-00050, SRG-OS-000297-GPOS-00115","checkContent":"Verify RHEL 10 controls remote access methods by inspecting the firewall configuration.\n\nInspect the list of enabled firewall ports and verify they are configured correctly by running the following command:\n\n$ sudo firewall-cmd --list-all\n\nAsk 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.\n\nIf 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.","fixText":"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.\n\nTo open a port for a service, configure \"firewalld\" using the following command:\n\n$ sudo firewall-cmd --permanent --add-port=port_number/tcp\nor\n$ sudo firewall-cmd --permanent --add-service=service_name","ccis":["CCI-000382","CCI-002314"]},{"vulnId":"V-281333","ruleId":"SV-281333r1167149_rule","severity":"medium","ruleTitle":"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.","description":"To prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary ports, protocols, and services on information systems.","checkContent":"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.\n\nInspect 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.\n\nCheck which services are currently active with the following command:\n\n$ sudo firewall-cmd --list-all-zones\n\nAsk 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.\n\nIf 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.","fixText":"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.\n\nUpdate the host's firewall settings and/or running services to comply with the PPSM CLSA for the site or program and the PPSM CAL.\n\nRun the following command to load the newly created rule(s):\n\n$ sudo firewall-cmd --reload","ccis":["CCI-000382"]},{"vulnId":"V-281334","ruleId":"SV-281334r1167152_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce that network interfaces not be in promiscuous mode.","description":"Network interfaces in promiscuous mode allow for the capture of all network traffic visible to the system. If unauthorized individuals can access these applications, it may allow them to collect information such as login IDs, passwords, and key exchanges between systems.\n\nIf the system is being used to perform a network troubleshooting function, the use of these tools must be documented with the information systems security officer (ISSO) and restricted to authorized personnel only.","checkContent":"Verify RHEL 10 network interfaces are not in promiscuous mode with the following command:\n\n$ sudo ip link | grep -i promisc\n\nIf 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.","fixText":"Configure RHEL 10 network interfaces to turn off promiscuous mode unless approved by the ISSO and documented.\n\nSet the promiscuous mode of an interface to \"off\" with the following command:\n\n$ sudo ip link set dev <devicename> multicast off promisc off","ccis":["CCI-002418"]},{"vulnId":"V-281335","ruleId":"SV-281335r1167155_rule","severity":"medium","ruleTitle":"RHEL 10 must disable access to the network bpf system call from nonprivileged processes.","description":"Loading and accessing the packet filters programs and maps using the bpf() system call has the potential to reveal sensitive information about the kernel state.","checkContent":"Verify RHEL 10 prevents privilege escalation through the kernel by disabling access to the bpf system call.\n\nCheck the status of the \"kernel.unprivileged_bpf_disabled\" kernel parameter with the following command:\n\n$ sysctl kernel.unprivileged_bpf_disabled\nkernel.unprivileged_bpf_disabled = 1\n\nIf \"kernel.unprivileged_bpf_disabled\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to prevent privilege escalation through the kernel by disabling access to the bpf system call.\n\nCreate the drop-in file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-kernel_unprivileged_bpf_disabled\n\nAdd the following line to the file:\n\nkernel.unprivileged_bpf_disabled = 1\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-001082"]},{"vulnId":"V-281336","ruleId":"SV-281336r1167158_rule","severity":"medium","ruleTitle":"RHEL 10 must securely compare internal information system clocks at least every 24 hours.","description":"Inaccurate time stamps make it more difficult to correlate events and can lead to an inaccurate analysis. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events. Sources outside the configured acceptable allowance (drift) may be inaccurate.\n\nSynchronizing internal information system clocks provides uniformity of time stamps for information systems with multiple system clocks and systems connected over a network.\n\nDepending on the infrastructure being used, the \"pool\" directive may not be supported.\n\nAuthoritative time sources include the United States Naval Observatory (USNO) time servers, a time server designated for the appropriate DOD network (NIPRNet/SIPRNet), and/or the Global Positioning System (GPS).\n\nSatisfies: SRG-OS-000355-GPOS-00143, SRG-OS-000356-GPOS-00144, SRG-OS-000359-GPOS-00146, SRG-OS-000785-GPOS-00250","checkContent":"Verify RHEL 10 is securely comparing internal information system clocks at least every 24 hours with an NTP server with the following commands:\n\n$ sudo grep maxpoll /etc/chrony.conf\nserver 0.us.pool.ntp.mil iburst maxpoll 16\n\nIf the \"maxpoll\" option is set to a number greater than 16, or the line is missing or commented out, this is a finding.\n\nVerify the \"chrony.conf\" file is configured to an authoritative DOD time source by running the following command:\n\n$ sudo grep -i server /etc/chrony.conf\nserver 0.us.pool.ntp.mil\n\nIf the parameter \"server\" is not set or is not set to an authoritative DOD time source, this is a finding.","fixText":"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:\n\nserver [ntp.server.name] iburst maxpoll 16","ccis":["CCI-004923","CCI-004926","CCI-001890","CCI-004922"]},{"vulnId":"V-281337","ruleId":"SV-281337r1167161_rule","severity":"medium","ruleTitle":"RHEL 10 must enable hardening for the Berkeley Packet Filter (BPF) just-in-time compiler.","description":"When hardened, the extended BPF just-in-time (JIT) compiler will randomize any kernel addresses in the BPF programs and maps, and will not expose the JIT addresses in \"/proc/kallsyms\".","checkContent":"Verify RHEL 10 enables hardening for the BPF JIT compiler.\n\nCheck the status of the \"net.core.bpf_jit_harden\" parameter with the following command:\n\n$ sudo sysctl net.core.bpf_jit_harden\nnet.core.bpf_jit_harden = 2\n\nIf \"net.core.bpf_jit_harden\" is not equal to \"2\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to enable hardening for the BPF JIT compiler.\n\nCreate the drop-in file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-net_core-bpf_jit_harden.conf\n\nAdd the following line to the file:\n\nnet.core.bpf_jit_harden = 2\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002824"]},{"vulnId":"V-281338","ruleId":"SV-281338r1167164_rule","severity":"medium","ruleTitle":"RHEL 10 must have at least two name servers configured for systems using Domain Name Server (DNS) resolution.","description":"To provide availability for name resolution services, multiple redundant name servers are mandated. A failure in name resolution could lead to the failure of security functions requiring name resolution, which may include time synchronization, centralized authentication, and remote system logging.","checkContent":"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.\n\nVerify RHEL 10 has at least two name servers configured for systems using DNS resolution.\n\nVerify the name servers used by the system with the following command:\n\n$ sudo grep nameserver /etc/resolv.conf\nnameserver 192.168.1.2\nnameserver 192.168.1.3\n\nIf fewer than two lines are returned that are not commented out, this is a finding.","fixText":"Configure RHEL 10 to use two or more name servers for DNS resolution based on the DNS mode of the system.\n\nIf the NetworkManager DNS mode is set to \"none\", add the following lines to \"/etc/resolv.conf\":\n\nnameserver [name server 1]\nnameserver [name server 2]\n\nReplace [name server 1] and [name server 2] with the IPs of two different DNS resolvers.\n\nIf the NetworkManager DNS mode is set to \"default\", add two DNS servers to a NetworkManager connection using the following command:\n\n$ nmcli connection modify [connection name] ipv4.dns [name server 1],[name server 2]\n\nReplace [name server 1] and [name server 2] with the IPs of two different DNS resolvers.\n\nReplace [connection name] with a valid NetworkManager connection name on the system. \n\nReplace ipv4 with ipv6 if IPv6 DNS servers are used.","ccis":["CCI-002385"]},{"vulnId":"V-281339","ruleId":"SV-281339r1167167_rule","severity":"medium","ruleTitle":"RHEL 10 must not have unauthorized IP tunnels configured.","description":"IP tunneling mechanisms can be used to bypass network filtering. If tunneling is required, it must be documented with the information system security officer (ISSO).","checkContent":"Verify RHEL 10 does not have unauthorized IP tunnels configured.\n\nDetermine if the IPsec service is active with the following command:\n\n$ systemctl is-active ipsec\nInactive\n\nIf the IPsec service is active, check for configured IPsec connections (\"conn\"), with the following command:\n\n$ sudo grep -rni conn /etc/ipsec.conf /etc/ipsec.d/\n\nVerify any returned results are documented with the ISSO.\n\nIf the IPsec tunnels are active and not approved, this is a finding.","fixText":"Configure RHEL 10 to not have unauthorized IP tunnels configured.\n\nRemove all unapproved tunnels from the system, or document them with the ISSO.","ccis":["CCI-000213"]},{"vulnId":"V-281340","ruleId":"SV-281340r1167170_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured to use Transmission Control Protocol (TCP) syncookies.","description":"Denial of service (DoS) is a condition when a resource is not available for legitimate users. When this occurs, the organization either cannot accomplish its mission or must operate at degraded capacity.\n\nManaging excess capacity ensures that sufficient capacity is available to counter flooding attacks. Employing increased capacity and service redundancy may reduce the susceptibility to some DoS attacks. Managing excess capacity may include, for example, establishing selected usage priorities, quotas, or partitioning.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00071","checkContent":"Verify RHEL 10 is configured to use Internet Protocol version 4 (IPv4) TCP syncookies.\n\nCheck the value of all \"net.ipv4.tcp_syncookies\" variables with the following command:\n\n$ sudo sysctl net.ipv4.tcp_syncookies\nnet.ipv4.tcp_syncookies = 1\n\nIf the network parameter \"ipv4.tcp_syncookies\" is not equal to \"1\", or nothing is returned, this is a finding.","fixText":"Configure RHEL 10 to use TCP syncookies.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-ipv4_tcp_syncookies.conf\n\nAdd the following line to the file:\n\nnet.ipv4.tcp_syncookies = 1\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001095"]},{"vulnId":"V-281341","ruleId":"SV-281341r1167173_rule","severity":"medium","ruleTitle":"RHEL 10 must ignore Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirect messages.","description":"ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack.\n\nThis feature of the IPv4 protocol has few legitimate uses. It should be disabled unless absolutely required.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00072","checkContent":"Verify RHEL 10 will not accept IPv4 ICMP redirect messages.\n\nCheck the value of all \"net.ipv4.conf.all.accept_redirects\" variables with the following command:\n\n$ sudo sysctl net.ipv4.conf.all.accept_redirects\nnet.ipv4.conf.all.accept_redirects = 0\n\nIf \"net.ipv4.conf.all.accept_redirects\" is not set to \"0\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to ignore IPv4 ICMP redirect messages.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-ipv4_accept_redirects.conf\n\nAdd the following line to the file:\n\nnet.ipv4.conf.all.accept_redirects = 0\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001096"]},{"vulnId":"V-281342","ruleId":"SV-281342r1167176_rule","severity":"medium","ruleTitle":"RHEL 10 must not forward Internet Protocol version 4 (IPv4) source-routed packets.","description":"Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when IPv4 forwarding is enabled and the system is functioning as a router.\n\nAccepting source-routed packets in the IPv4 protocol has few legitimate uses. It must be disabled unless it is absolutely required.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00073","checkContent":"Verify RHEL 10 will not accept IPv4 source-routed packets.\n\nCheck the value of the \"net.ipv4.conf.all.accept_source_route\" variable with the following command:\n\n$ sudo sysctl net.ipv4.conf.all.accept_source_route\nnet.ipv4.conf.all.accept_source_route = 0\n\nIf \"net.ipv4.conf.all.accept_source_route\" is not set to \"0\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to ignore IPv4 source-routed packets.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-ipv4_accept_source.conf\n\nAdd the following line to the file:\n\nnet.ipv4.conf.all.accept_source_route = 0\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001097"]},{"vulnId":"V-281343","ruleId":"SV-281343r1167179_rule","severity":"medium","ruleTitle":"RHEL 10 must log Internet Protocol version 4 (IPv4) packets with impossible addresses.","description":"The presence of \"martian\" packets (which have impossible addresses), as well as spoofed packets, source-routed packets, and redirects, could be a sign of nefarious network activity. Logging these packets enables this activity to be detected.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00074","checkContent":"Verify RHEL 10 logs IPv4 martian packets.\n\nCheck the value of the \"net.ipv4.conf.all.log_martians\" variable with the following command:\n\n$ sudo sysctl net.ipv4.conf.all.log_martians\nnet.ipv4.conf.all.log_martians = 1\n\nIf \"net.ipv4.conf.all.log_martians\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to log martian packets on IPv4 interfaces.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-ipv4_log_martians.conf\n\nAdd the following line to the file:\n\nnet.ipv4.conf.all.log_martians=1\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001098"]},{"vulnId":"V-281344","ruleId":"SV-281344r1167182_rule","severity":"medium","ruleTitle":"RHEL 10 must log Internet Protocol version 4 (IPv4) packets with impossible addresses by default.","description":"The presence of \"martian\" packets (which have impossible addresses) as well as spoofed packets, source-routed packets, and redirects, could be a sign of nefarious network activity. Logging these packets enables this activity to be detected.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00075","checkContent":"Verify RHEL 10 logs IPv4 martian packets by default.\n\nCheck the value of the \"net.ipv4.conf.default.log_martians\" variable with the following command:\n\n$ sudo sysctl net.ipv4.conf.default.log_martians\nnet.ipv4.conf.default.log_martians = 1\n\nIf \"net.ipv4.conf.default.log_martians\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to log martian packets on IPv4 interfaces by default.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-ipv4_log_martians.conf\n\nAdd the following line to the file:\n\nnet.ipv4.conf.default.log_martians=1\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001099"]},{"vulnId":"V-281345","ruleId":"SV-281345r1167185_rule","severity":"medium","ruleTitle":"RHEL 10 must use reverse path filtering on all Internet Protocol version 4 (IPv4) interfaces.","description":"Enabling reverse path filtering drops packets with source addresses that should not have been able to be received on the interface on which they were received. It must not be used on systems that are routers for complicated networks but is helpful for end hosts and routers serving small networks.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00076","checkContent":"Verify RHEL 10 uses reverse path filtering on all IPv4 interfaces.\n\nCheck the value of the \"net.ipv4.conf.all.rp_filter\" variable with the following command:\n\n$ sudo sysctl net.ipv4.conf.all.rp_filter\nnet.ipv4.conf.all.rp_filter = 1\n\nIf \"net.ipv4.conf.all.rp_filter\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to use reverse path filtering on all IPv4 interfaces.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-ipv4_rp_filter.conf\n\nAdd the following line to the file:\n\nnet.ipv4.conf.all.rp_filter = 1\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001100"]},{"vulnId":"V-281346","ruleId":"SV-281346r1197251_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirect messages from being accepted.","description":"ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack.\n\nThis feature of the IPv4 protocol has few legitimate uses. It must be disabled unless absolutely required.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00077","checkContent":"Verify RHEL 10 will not accept IPv4 ICMP redirect messages.\n\nCheck the value of the default \"net.ipv4.conf.default.accept_redirects\" variable with the following command:\n\n$ sudo sysctl net.ipv4.conf.default.accept_redirects\nnet.ipv4.conf.default.accept_redirects = 0\n\nIf \"net.ipv4.conf.default.accept_redirects\" is not set to \"0\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to prevent IPv4 ICMP redirect messages from being accepted.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-ipv4_accept_redirects.conf\n\nAdd the following line to the file:\n\nnet.ipv4.conf.default.accept_redirects = 0\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001101"]},{"vulnId":"V-281347","ruleId":"SV-281347r1167191_rule","severity":"medium","ruleTitle":"RHEL 10 must not forward Internet Protocol version 4 (IPv4) source-routed packets by default.","description":"Source-routed packets allow the source of the packet to suggest routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures.\n\nAccepting source-routed packets in the IPv4 protocol has few legitimate uses. It must be disabled unless it is absolutely required, such as when IPv4 forwarding is enabled and the system is legitimately functioning as a router.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00078","checkContent":"Verify RHEL 10 does not accept IPv4 source-routed packets by default.\n\nCheck the value of the \"net.ipv4.conf.default.accept_source_route\" variable with the following command:\n\n$ sudo sysctl net.ipv4.conf.default.accept_source_route\nnet.ipv4.conf.default.accept_source_route = 0\n\nIf \"net.ipv4.conf.default.accept_source_route\" is not set to \"0\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to not forward IPv4 source-routed packets by default.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/99-ipv4_accept_source_route.conf\n\nAdd the following line to the file:\n\nnet.ipv4.conf.default.accept_source_route = 0\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001102"]},{"vulnId":"V-281348","ruleId":"SV-281348r1167194_rule","severity":"medium","ruleTitle":"RHEL 10 must use a reverse-path filter for Internet Protocol version 4 (IPv4) network traffic when possible by default.","description":"Enabling reverse path filtering drops packets with source addresses that should not have been able to be received on the interface on which they were received. It must not be used on systems that are routers for complicated networks but is helpful for end hosts and routers serving small networks.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00079","checkContent":"Verify RHEL 10 uses reverse path filtering on IPv4 interfaces.\n\nCheck the value of the \"net.ipv4.conf.default.rp_filter\" with the following command:\n\n$ sudo sysctl net.ipv4.conf.default.rp_filter\nnet.ipv4.conf.default.rp_filter = 1\n\nIf the returned line does not have a value of \"1\", or a line is not returned, this is a finding.","fixText":"Configure RHEL 10 to use reverse path filtering on IPv4 interfaces by default.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/ipv4_rp_filter.conf\n\nAdd the following line to the file:\n\nnet.ipv4.conf.default.rp_filter = 1\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001103"]},{"vulnId":"V-281349","ruleId":"SV-281349r1167197_rule","severity":"medium","ruleTitle":"RHEL 10 must not respond to Internet Control Message Protocol (ICMP) echoes sent to a broadcast address.","description":"Responding to broadcast (ICMP) echoes facilitates network mapping and provides a vector for amplification attacks.\n\nIgnoring ICMP echo requests (pings) sent to broadcast or multicast addresses makes the system slightly more difficult to enumerate on the network.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00080","checkContent":"Verify RHEL 10 ignores ICMP echoes sent to a broadcast address.\n\nCheck the value of the \"net.ipv4.icmp_echo_ignore_broadcasts\" variable with the following command:\n\n$ sudo sysctl net.ipv4.icmp_echo_ignore_broadcasts\nnet.ipv4.icmp_echo_ignore_broadcasts = 1\n\nIf \"net.ipv4.icmp_echo_ignore_broadcasts\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to ignore Internet Protocol version 4 (IPv4) ICMP echoes sent to a broadcast address.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/ipv4_icmp_echo_ignore_broadcasts.conf\n\nAdd the following line to the file:\n\nnet.ipv4.icmp_echo_ignore_broadcasts = 1\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001104"]},{"vulnId":"V-281350","ruleId":"SV-281350r1167200_rule","severity":"medium","ruleTitle":"RHEL 10 must limit the number of bogus Internet Control Message Protocol (ICMP) response errors logs.","description":"Some routers will send responses to broadcast frames that violate RFC-1122, which fills up a log file system with many useless error messages. An attacker may take advantage of this and attempt to flood the logs with bogus error logs. Ignoring bogus ICMP error responses reduces log size, although some activity would not be logged.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00081","checkContent":"Verify RHEL 10 limits the number of bogus ICMP response errors logs.\n\nCheck the value of the \"net.ipv4.icmp_ignore_bogus_error_response\" variables with the following command:\n\n$ sudo sysctl net.ipv4.icmp_ignore_bogus_error_responses\nnet.ipv4.icmp_ignore_bogus_error_responses = 1\n\nIf \"net.ipv4.icmp_ignore_bogus_error_response\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to not log bogus ICMP errors.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/ipv4_icmp_ignore_bogus_error_responses.conf\n\nAdd the following line to the file:\n\nnet.ipv4.icmp_ignore_bogus_error_responses = 1\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001105"]},{"vulnId":"V-281351","ruleId":"SV-281351r1184698_rule","severity":"medium","ruleTitle":"RHEL 10 must not send Internet Control Message Protocol (ICMP) redirects.","description":"ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table, possibly revealing portions of the network topology.\n\nThe ability to send ICMP redirects is only appropriate for systems acting as routers.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00082","checkContent":"Verify RHEL 10 does not send IPv4 ICMP redirect messages.\n\nCheck the value of the \"net.ipv4.conf.all.send_redirects\" variables with the following command:\n\n$ sudo sysctl net.ipv4.conf.all.send_redirects\nnet.ipv4.conf.all.send_redirects = 0\n\nIf \"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.","fixText":"Configure RHEL 10 to not send IPv4 ICMP redirect messages.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/ipv4_send_redirects.conf\n\nAdd the following line to the file:\n\nnet.ipv4.conf.all.send_redirects = 0\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001106"]},{"vulnId":"V-281352","ruleId":"SV-281352r1184706_rule","severity":"medium","ruleTitle":"RHEL 10 must not allow interfaces to perform Internet Control Message Protocol (ICMP) redirects by default.","description":"ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table, possibly revealing portions of the network topology.\n\nThe ability to send ICMP redirects is only appropriate for systems acting as routers.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00083","checkContent":"Verify RHEL 10 does not allow interfaces to perform Internet Protocol version 4 (IPv4) ICMP redirects by default.\n\nCheck the value of the \"net.ipv4.conf.default.send_redirects\" variables with the following command:\n\n$ sudo sysctl net.ipv4.conf.default.send_redirects\nnet.ipv4.conf.default.send_redirects=0\n\nIf \"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.","fixText":"Configure RHEL 10 to not allow interfaces to perform IPv4 ICMP redirects by default.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/ipv4_send_redirects.conf\n\nAdd the following line to the file:\n\nnet.ipv4.conf.default.send_redirects = 0\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001107"]},{"vulnId":"V-281353","ruleId":"SV-281353r1167209_rule","severity":"medium","ruleTitle":"RHEL 10 must not enable Internet Protocol version 4 (IPv4) packet forwarding unless the system is a router.","description":"Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this capability is used when not required, system network information may be transmitted unnecessarily across the network.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00084","checkContent":"Verify RHEL 10 is not performing IPv4 packet forwarding unless the system is a router.\n\nCheck that \"net.ipv4.conf.all.forwarding\" is disabled using the following command:\n\n$ sudo sysctl net.ipv4.conf.all.forwarding\nnet.ipv4.conf.all.forwarding = 0\n\nIf \"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.","fixText":"Configure RHEL 10 to not allow IPv4 packet forwarding unless the system is a router.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/ipv4_forwarding.conf\n\nAdd the following line to the file:\n\nnet.ipv4.conf.all.forwarding = 0\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001108"]},{"vulnId":"V-281354","ruleId":"SV-281354r1167212_rule","severity":"medium","ruleTitle":"RHEL 10 must not accept router advertisements on all Internet Protocol version 6 (IPv6) interfaces.","description":"An illicit router advertisement message could result in a man-in-the-middle attack.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00085","checkContent":"Note: If IPv6 is disabled on the system, this requirement is not applicable.\n\nVerify RHEL 10 does not accept router advertisements on all IPv6 interfaces, unless the system is a router.\n\nCheck that \"net.ipv6.conf.all.accept_ra\" is set to not accept router advertisements by using the following command:\n\n$ sudo sysctl net.ipv6.conf.all.accept_ra\nnet.ipv6.conf.all.accept_ra = 0\n\nIf \"net.ipv6.conf.all.accept_ra\" is not set to \"0\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to not accept router advertisements on all IPv6 interfaces, unless the system is a router.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/ipv4_accept_ra.conf\n\nAdd the following line to the file:\n\nnet.ipv6.conf.all.accept_ra = 0\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001109"]},{"vulnId":"V-281355","ruleId":"SV-281355r1167215_rule","severity":"medium","ruleTitle":"RHEL 10 must ignore IPv6 Internet Control Message Protocol (ICMP) redirect messages.","description":"An illicit ICMP redirect message could result in a man-in-the-middle attack.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00086","checkContent":"Note: If IPv6 is disabled on the system, this requirement is not applicable.\n\nVerify RHEL 10 ignores IPv6 ICMP redirect messages.\n\nCheck the value of the \"net.ipv6.conf.all.accept_redirects\" variable with the following command:\n\n$ sysctl net.ipv6.conf.all.accept_redirects\nnet.ipv6.conf.all.accept_redirects = 0\n\nIf \"net.ipv6.conf.all.accept_redirects\" is not set to \"0\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to ignore Internet Protocol version 6 (IPv6) ICMP redirect messages.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/ipv6_accept_redirects.conf\n\nAdd the following line to the file:\n\nnet.ipv6.conf.all.accept_redirects = 0\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001110"]},{"vulnId":"V-281356","ruleId":"SV-281356r1167218_rule","severity":"medium","ruleTitle":"RHEL 10 must not forward Internet Protocol version 6 (IPv6) source-routed packets.","description":"Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00087","checkContent":"Note: If IPv6 is disabled on the system, this requirement is not applicable.\n\nVerify RHEL 10 does not accept IPv6 source-routed packets.\n\nCheck the value of the \"net.ipv6.conf.all.accept_source_route\" variable with the following command:\n\n$ sudo sysctl net.ipv6.conf.all.accept_source_route\nnet.ipv6.conf.all.accept_source_route = 0\n\nIf \"net.ipv6.conf.all.accept_source_route\" is not set to \"0\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to not accept IPv6 source-routed packets.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/ipv6_accept_source_route.conf\n\nAdd the following line to the file:\n\nnet.ipv6.conf.all.accept_source_route = 0\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001111"]},{"vulnId":"V-281357","ruleId":"SV-281357r1167221_rule","severity":"medium","ruleTitle":"RHEL 10 must not enable Internet Protocol version 6 (IPv6) packet forwarding unless the system is a router.","description":"IP forwarding permits the kernel to forward packets from one network interface to another. The ability to forward packets between two networks is only appropriate for systems acting as routers.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00088","checkContent":"Note: If IPv6 is disabled on the system, this requirement is not applicable.\n\nVerify RHEL 10 is not performing IPv6 packet forwarding unless the system is a router.\n\nCheck the value of the \"net.ipv6.conf.all.forwarding\" variable with the following command:\n\n$ sudo sysctl net.ipv6.conf.all.forwarding\nnet.ipv6.conf.all.forwarding = 0\n\nIf \"net.ipv6.conf.all.forwarding\" is not set to \"0\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to not allow IPv6 packet forwarding unless the system is a router.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/ipv6_forwarding.conf\n\nAdd the following line to the file:\n\nnet.ipv6.conf.all.forwarding = 0\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001112"]},{"vulnId":"V-281358","ruleId":"SV-281358r1167224_rule","severity":"medium","ruleTitle":"RHEL 10 must not accept router advertisements on all Internet Protocol version 6 (IPv6) interfaces by default.","description":"An illicit router advertisement message could result in a man-in-the-middle attack.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00089","checkContent":"Note: If IPv6 is disabled on the system, this requirement is not applicable.\n\nVerify RHEL 10 does not accept router advertisements on all IPv6 interfaces by default, unless the system is a router.\n\nCheck the value of the \"net.ipv6.conf.default.accept_ra\" variable with the following command:\n\n$ sudo sysctl net.ipv6.conf.default.accept_ra\nnet.ipv6.conf.default.accept_ra = 0\n\nIf \"net.ipv6.conf.default.accept_ra\" is not set to \"0\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to not accept router advertisements on all IPv6 interfaces by default, unless the system is a router.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/ipv6_accept_ra.conf\n\nAdd the following line to the file:\n\nnet.ipv6.conf.default.accept_ra = 0\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001113"]},{"vulnId":"V-281359","ruleId":"SV-281359r1167227_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent Internet Protocol version 6 (IPv6) Internet Control Message Protocol (ICMP) redirect messages from being accepted.","description":"ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00090","checkContent":"Note: If IPv6 is disabled on the system, this requirement is not applicable.\n\nVerify RHEL 10 prevents IPv6 ICMP redirect messages from being accepted.\n\nCheck the value of the \"net.ipv6.conf.default.accept_redirects\" variables with the following command:\n\n$ sudo sysctl net.ipv6.conf.default.accept_redirects\nnet.ipv6.conf.default.accept_redirects = 0\n\nIf \"net.ipv6.conf.default.accept_redirects\" is not set to \"0\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to prevent IPv6 ICMP redirect messages from being accepted.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/ipv6_accept_redirects.conf\n\nAdd the following line to the file:\n\nnet.ipv6.conf.default.accept_redirects = 0\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001114"]},{"vulnId":"V-281360","ruleId":"SV-281360r1167230_rule","severity":"medium","ruleTitle":"RHEL 10 must not forward Internet Protocol version 6 (IPv6) source-routed packets by default.","description":"Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router.\n\nAccepting source-routed packets in the IPv6 protocol has few legitimate uses. It must be disabled unless it is absolutely required.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00091","checkContent":"Note: If IPv6 is disabled on the system, this requirement is not applicable.\n\nVerify RHEL 10 does not accept IPv6 source-routed packets by default.\n\nCheck the value of the \"net.ipv6.conf.default.accept_source_route\" variables with the following command:\n\n$ sudo sysctl net.ipv6.conf.default.accept_source_route\nnet.ipv6.conf.default.accept_source_route = 0\n\nIf \"net.ipv6.conf.default.accept_source_route\" is not set to \"0\" or is missing, this is a finding.","fixText":"Configure RHEL 10 to not accept IPv6 source-routed packets by default.\n\nCreate a configuration file if it does not already exist:\n\n$ sudo vi /etc/sysctl.d/ipv6_accept_source_route.conf\n\nAdd the following line to the file:\n\nnet.ipv6.conf.default.accept_source_route = 0\n\nReload settings from all system configuration files with the following command:\n\n$ sudo sysctl --system","ccis":["CCI-002385","CCI-001115"]},{"vulnId":"V-281361","ruleId":"SV-281361r1167233_rule","severity":"medium","ruleTitle":"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.","description":"DoS is a condition when a resource is not available for legitimate users. When this occurs, the organization either cannot accomplish its mission or must operate at degraded capacity.\n\nThis requirement addresses the configuration of RHEL 10 to mitigate the impact of DoS attacks that have occurred or are ongoing on system availability. For each system, known and potential DoS attacks must be identified and solutions for each type implemented. A variety of technologies exist to limit or, in some cases, eliminate the effects of DoS attacks (e.g., limiting processes or establishing memory partitions). Employing increased capacity and bandwidth, combined with service redundancy, may reduce the susceptibility to some DoS attacks.","checkContent":"Verify RHEL 10 protects against or limits the effects of DoS attacks by ensuring rate-limiting measures on impacted network interfaces are implemented.\n\nCheck that \"nftables\" is configured to allow rate limits on any connection to the system with the following command:\n\n$ sudo grep -i firewallbackend /etc/firewalld/firewalld.conf\n# FirewallBackend\nFirewallBackend=nftables\n\nIf \"nftables\" is not set to \"FirewallBackend\", this is a finding.","fixText":"Configure RHEL 10 so that \"nftables\" is the default \"firewallbackend\" for \"firewalld\" by adding or editing the following line in \"/etc/firewalld/firewalld.conf\":\n\nFirewallBackend=nftables\n\nEstablish rate-limiting rules based on organization-defined types of DoS attacks on impacted network interfaces.","ccis":["CCI-002385"]},{"vulnId":"V-281362","ruleId":"SV-281362r1167236_rule","severity":"medium","ruleTitle":"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.","description":"To ensure that DNS resolver settings are respected, a DNS mode in Network Manager must be configured. The following are common DNS values in \"NetworkManager.conf [main]\":\n\n- default: NetworkManager will update \"/etc/resolv.conf\" to reflect the nameservers provided by currently active connections.\n- none: NetworkManager will not modify \"/etc/resolv.conf\". Used when DNS is managed manually or by another service.\n- systemd-resolved: Uses \"systemd-resolved\" to manage DNS.\n- dnsmasq: Enables the internal \"dnsmasq\" plugin.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00091","checkContent":"Verify RHEL 10 has a DNS mode configured in Network Manager.\n\n$ NetworkManager --print-config\n[main]\ndns=none\n\nIf the dns key under \"main\" does not exist or is set to \"dnsmasq\", this is a finding.\n\nNote: 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.","fixText":"Configure RHEL 10 to use a DNS mode in Network Manager.\n\nIn \"/etc/NetworkManager/NetworkManager.conf\", add the following line in the \"[main]\" section:\n\ndns = none\n\nWhere <dns processing mode> is default, none, or systemd-resolved.\n\nNetwork Manager must be reloaded for the change to take effect:\n\n$ sudo systemctl reload NetworkManager","ccis":["CCI-002385","CCI-001115"]},{"vulnId":"V-281363","ruleId":"SV-281363r1195454_rule","severity":"medium","ruleTitle":"RHEL 10 must be configured to operate in secure mode if the Trivial File Transfer Protocol (TFTP) server service is required.","description":"Restricting TFTP to a specific directory prevents remote users from copying, transferring, or overwriting system files.","checkContent":"Note: If a TFTP server is not installed, this rule is not applicable.\n\nVerify RHEL 10 is configured to operate in secure mode if the TFTP server service is required.\n\nDetermine if the TFTP server is installed with the following command:\n\n$ sudo dnf list installed | grep tftp-server\ntftp-server.x86_64                                   5.2-48.el10                     @rhel-10-for-x86_64-appstream-rpms\n\nVerify that the TFTP daemon, if \"tftp.server\" is installed, is configured to operate in secure mode with the following command:\n\n$ systemctl cat tftp.service | grep -i execstart\nExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot\n\nNote: 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.\n\nIf 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.","fixText":"Configure RHEL 10 TFTP to operate in secure mode with the following command:\n\n$ sudo systemctl edit tftp.service\n\nIn the editor, enter the following:\n\n[Service]\nExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot\n\nAfter making changes, reload the systemd daemon and restart the TFTP service as follows:\n\n$ sudo systemctl daemon-reload\n$ sudo systemctl restart tftp.service","ccis":["CCI-000197"]},{"vulnId":"V-281364","ruleId":"SV-281364r1167242_rule","severity":"medium","ruleTitle":"RHEL 10 must enforce mode \"0640\" or less for the \"/etc/audit/auditd.conf\" file to prevent unauthorized access.","description":"Without the capability to restrict the roles and individuals that can select which events are audited, unauthorized personnel may be able to prevent the auditing of critical events. Misconfigured audits may degrade the system's performance by overwhelming the audit log. Misconfigured audits may also make it more difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.","checkContent":"Verify RHEL 10 enforces the mode of \"/etc/audit/auditd.conf\" with the following command:\n\n$ sudo stat -c \"%a %n\" /etc/audit/auditd.conf\n640 /etc/audit/auditd.conf\n\nIf \"/etc/audit/auditd.conf\" does not have a mode of \"0640\", this is a finding.","fixText":"Configure RHEL 10 to set the mode of the \"/etc/audit/auditd.conf\" file to \"0640\" with the following command:\n\n$ sudo chmod 0640 /etc/audit/auditd.conf","ccis":["CCI-000171"]},{"vulnId":"V-281365","ruleId":"SV-281365r1167245_rule","severity":"medium","ruleTitle":"RHEL 10 must prevent unauthorized changes to the audit system.","description":"Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality.\n\nAudit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 10 system activity.\n\nIn immutable mode, unauthorized users cannot execute changes to the audit system to potentially hide malicious activity and then put the audit rules back. A system reboot would be noticeable, and a system administrator could then investigate the unauthorized changes.\n\nSatisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029","checkContent":"Verify the RHEL 10 audit system prevents unauthorized changes with the following command:\n\n$ sudo grep \"^\\s*[^#]\" /etc/audit/audit.rules | tail -1\n-e 2\n\nIf 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.","fixText":"Configure RHEL 10 to protect the audit system from unauthorized changes.\n\nSet the audit rules to be immutable by adding the following line to end of \"/etc/audit/rules.d/audit.rules\":\n\n-e 2\n\nRestart the audit daemon with the following command for the changes to take effect:\n\n$ sudo service auditd restart","ccis":["CCI-000162","CCI-000163","CCI-000164"]},{"vulnId":"V-282965","ruleId":"SV-282965r1197252_rule","severity":"high","ruleTitle":"RHEL 10 must be a vendor-supported release.","description":"An operating system release is considered \"supported\" if the vendor continues to provide security patches for the product. With an unsupported release, it will not be possible to resolve security issues discovered in the system software.\n\nRed Hat offers the Extended Update Support (EUS) add-on to a Red Hat Enterprise Linux subscription, for a fee, for customers who wish to standardize on a specific minor release for an extended period.\n\nEnd-of-life dates for Red Hat Linux 10 releases are as follows:\n- Current end of Full Support for Red Hat Linux 10 is 31 May 2030.\n- Current end of Maintenance Support for Red Hat Linux 10 is 31 May 2035.\n- Current end of Extended Life Cycle Support (ELS) for Red Hat Linux 9 is 31 May 2038.","checkContent":"Verify RHEL 10 is a vendor-supported version with the following command:\n\n$ cat /etc/redhat-release\nRed Hat Enterprise Linux release 10.0 (Coughlan)\n\nIf the installed version of RHEL 10 is not supported, this is a finding.","fixText":"Upgrade to a supported version of RHEL 10.","ccis":["CCI-003376"]}]}