/home/mburket/Downloads/RHEL_9_STIG_Stage_3_Submission.xlsx vs /home/mburket/code/ComplianceAsCode/content/build/cac_stig_output.xlsx

Missing in DISA

Missing in CaC

Deltas

CCE-85958-7 - audit_privileged_commands_reboot

Check

n1Verify that RHEL 9 is configured to audit the execution of the "reboot" command with the following command:n1Verify that an audit event is generated for any successful/unsuccessful use of the reboot command by performing the following command to check the file system rules in "/etc/audit/audit.rules":
22
n3$ sudo auditctl -l | grep rebootn3$ sudo grep -w reboot /etc/audit/audit.rules
44
5-a always,exit -F path=/usr/sbin/reboot -F perm=x -F auid>=1000 -F auid!=unset -k privileged-reboot5-a always,exit -F path=/usr/sbin/reboot -F perm=x -F auid>=1000 -F auid!=unset -k privileged-reboot
66
t7If the command does not return a line, or the line is commented out, this is a finding.t7If the command does not return a line, or the line is commented out, then this is a finding.

CCE-85972-8 - no_empty_passwords_etc_shadow

Requirement

t1RHEL 9 must not have accounts configured with blank or null passwords.t1RHEL 9 must have no accounts with blank or null passwords.

Check

n1Verify that null or blank passwords cannot be used with the following command:n1To verify that null passwords cannot be used, run the following command:
2 $ sudo awk -F: '!$2 {print $1}' /etc/shadow
3If this produces any output, it may be possible to log into accounts
4with empty passwords.
25
t3$ sudo awk -F: '!$2 {print $1}' /etc/shadowt6If Blank or NULL passwords can be used, then this is a finding.
4 
5If the command returns any results, this is a finding.

Fix

n1Configure all accounts on RHEL 9 to have a password or lock the account with the following commands:n1Configure all accounts on RHEL 9 to have a password or lock
2 2the account with the following commands:
3Perform a password reset:3Perform a password reset:
t4 t
5$ sudo passwd [username]4 $ sudo passwd [username]
6 
7To lock an account:5Lock an account:
8 
9$ sudo passwd -l [username]6 $ sudo passwd -l [username]

CCE-83956-3 - sysctl_user_max_user_namespaces

Check

f1Verify RHEL 9 disables the use of user namespaces with the following commands:f1Verify RHEL 9 disables the use of user namespaces with the following commands:
22
3Note: User namespaces are used primarily for Linux containers. If containers are in use, this requirement is not applicable.3Note: User namespaces are used primarily for Linux containers. If containers are in use, this requirement is not applicable.
44
t5$ sysctl user.max_user_namespacest5$ sudo sysctl user.max_user_namespaces
66
7user.max_user_namespaces = 07user.max_user_namespaces = 0
88
9If the returned line does not have a value of "0", or a line is not returned, this is a finding.9If the returned line does not have a value of "0", or a line is not returned, this is a finding.

CCE-83925-8 - file_owner_etc_group

Check

n1Verify the ownership of the "/etc/group" file with the following command:n1To check the ownership of /etc/group ,
2run the command:
3 $ sudo stat -c "%U %n" /etc/group
4If properly configured, the output should indicate the following owner:
5 root /etc/group
26
t3$ sudo stat -c "%U %n" /etc/groupt
4 
5root /etc/group
6 
7If "/etc/group" file does not have an owner of "root", this is a finding.7If /etc/group does not have an owner of root, then this is a finding.

Fix

f1Change the owner of the file /etc/group to root by running the following command:f1Change the owner of the file /etc/group to root by running the following command:
t2 t
3$ sudo chown root /etc/group2$ sudo chown root /etc/group

CCE-83987-8 - package_rsyslog-gnutls_installed

Check

t1Verify that RHEL 9 has the rsyslog-gnutls package installed with the following command:t1Verify that RHEL 9 has the rsyslog-gnutls package installed with the following command:$ sudo dnf list --installed rsyslog-gnutlsrsyslog-gnutls.x86_64  8.2102.0-101.el9_0.1If the rsyslog-gnutls package is not installed, this is a finding.
2 
3$ sudo dnf list --installed rsyslog-gnutls
4 
5rsyslog-gnutls.x86_64     8.2102.0-101.el9_0.1
6 
7If the rsyslog-gnutls package is not installed, this is a finding.

CCE-90818-6 - file_permissions_sshd_config

Check

f1Verify the permissions of the "/etc/ssh/sshd_config" file with the following command:f1Verify the permissions of the "/etc/ssh/sshd_config" file with the following command:
22
3$ ls -al /etc/ssh/sshd_config3$ ls -al /etc/ssh/sshd_config
44
5rw-------. 1 root root 3669 Feb 22 11:34 /etc/ssh/sshd_config5rw-------. 1 root root 3669 Feb 22 11:34 /etc/ssh/sshd_config
66
t7If the "/etc/ssh/sshd_config" permissions are not 0600, this is a finding.t7If the "/etc/ssh/sshd_config" permissions are not 0600, then this is a finding.

CCE-83944-9 - file_owner_backup_etc_group

Requirement

t1The RHEL 9 /etc/group- file must be owned by root.t1The RHEL 9 /etc/group- file must be group-owned by root.

Check

n1Verify the ownership of the "/etc/group-" file with the following command:n1To check the ownership of /etc/group- ,
2run the command:
3 $ sudo stat -c "%U %n" /etc/group-
4If properly configured, the output should indicate the following owner:
5 root
26
t3$ sudo stat -c "%U %n" /etc/group-t
4 
5root /etc/group-
6 
7If "/etc/group-" file does not have an owner of "root", this is a finding.7If /etc/group- does not have an owner of root, then this is a finding.

Fix

t1Change the owner of the file /etc/group- to root by running the following command:t1Change the group of the file /etc/group- to root by running the following command:
2 
3$ sudo chown root /etc/group-2$ sudo chgrp root /etc/group-

CCE-84131-2 - sysctl_net_ipv6_conf_all_accept_source_route

Vul_Discussion

f1Source-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.f1Source-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.
t2 t

Check

f1Verify RHEL 9 does not accept IPv6 source-routed packets.f1Verify RHEL 9 does not accept IPv6 source-routed packets.
22
3Note: If IPv6 is disabled on the system, this requirement is Not Applicable.3Note: If IPv6 is disabled on the system, this requirement is Not Applicable.
44
5Check the value of the accept source route variable with the following command:5Check the value of the accept source route variable with the following command:
66
t7$ sysctl net.ipv6.conf.all.accept_source_routet7$ sudo sysctl net.ipv6.conf.all.accept_source_route
88
9net.ipv6.conf.all.accept_source_route = 09net.ipv6.conf.all.accept_source_route = 0
1010
11If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.11If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.
1212
13Check that the configuration files are present to enable this network parameter.13Check that the configuration files are present to enable this network parameter.
1414
15$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv6.conf.all.accept_source_route | tail -115$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv6.conf.all.accept_source_route | tail -1
1616
17net.ipv6.conf.all.accept_source_route = 017net.ipv6.conf.all.accept_source_route = 0
1818
19If "net.ipv6.conf.all.accept_source_route" is not set to "0" or is missing, this is a finding.19If "net.ipv6.conf.all.accept_source_route" is not set to "0" or is missing, this is a finding.

Fix

f1Configure RHEL 9 to not forward IPv6 source-routed packets.f1Configure RHEL 9 to not forward IPv6 source-routed packets.
22
3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:
44
t5net.ipv6.conf.all.accept_source_route = 0t5net.ipv6.conf.all.accept_source_route=0
66
7Load settings from all system configuration files with the following command:7Load settings from all system configuration files with the following command:
88
9$ sudo sysctl --system9$ sudo sysctl --system

CCE-83951-4 - file_groupowner_backup_etc_gshadow

Check

n1Verify the group ownership of the "/etc/gshadow-" file with the following command:n1To check the group ownership of /etc/gshadow- ,
2run the command:
3 $ sudo stat -c "%U %n" /etc/gshadow-
4If properly configured, the output should indicate the following group-owner:
5 root
26
t3$ sudo stat -c "%G %n" /etc/gshadow-t
4 
5root /etc/gshadow-
6 
7If "/etc/gshadow-" file does not have a group owner of "root", this is a finding.7If /etc/gshadow- does not have a group owner of root, then this is a finding.

Fix

f1Change the group of the file /etc/gshadow- to root by running the following command:f1Change the group of the file /etc/gshadow- to root by running the following command:
t2 t
3$ sudo chgrp root /etc/gshadow-2$ sudo chgrp root /etc/gshadow-

CCE-84176-7 - file_permissions_crontab

Requirement

t1The RHEL 9 /etc/crontab file must have mode 0600.t1The RHEL 9 file must have mode 0600 /etc/crontab.

Check

n1Verify the permissions of /etc/crontab with the following command:n1To check the permissions of  /etc/crontab ,
2run the command:
3 $ stat -c "%a %n" /etc/crontab
4If properly configured, the output should indicate the following permissions:
5644
26
t3$ stat -c "%a %n" /etc/crontabt
4 
50600
6 
7If /etc/crontab does not have a mode of 0600, this is a finding.7If /etc/crontab does not have unix mode 644 then this is a finding.

Fix

f1Configure the RHEL 9 file /etc/crontab with mode 600.f1Configure the RHEL 9 file /etc/crontab with mode 600.
22
t3$ sudo chmod 0600 /etc/crontabt3chmod 0600 /etc/crontab

CCE-83634-6 - file_permissions_home_directories

Check

t1 Verify the assigned home directory of all local interactive users has a mode of "0750" or less permissive with the following command:t1Verify the assigned home directory of all local interactive users has a mode of "0750" or less permissive with the following command:
22
3Note: 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 logon information.3Note: 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 logon information.
44
5$ sudo ls -ld $(awk -F: '($3>=1000)&&($7 !~ /nologin/){print $6}' /etc/passwd)5$ sudo ls -ld $(awk -F: '($3>=1000)&&($7 !~ /nologin/){print $6}' /etc/passwd)
66
7drwxr-x--- 2 smithj admin 4096 Jun 5 12:41 smithj7drwxr-x--- 2 smithj admin 4096 Jun 5 12:41 smithj
88
9If home directories referenced in "/etc/passwd" do not have a mode of "0750" or less permissive, this is a finding.9If home directories referenced in "/etc/passwd" do not have a mode of "0750" or less permissive, this is a finding.

CCE-90845-9 - partition_for_tmp

Check

n1Verify that a separate file system/partition has been created for "/tmp" with the following command:n1Verify that a separate file system/partition has been created for  /tmp  with the following command:
22
n3$ mount | grep /tmpn3 $ mountpoint /tmp
44
n5tmpfs /tmp tmpfs noatime,mode=1777 0 0n
65
t7If a separate entry for "/tmp" is not in use, this is a finding.t6If "/tmp is is not a mountpoint" is returned, then this is a finding.

CCE-83926-6 - file_owner_etc_shadow

Check

n1Verify the ownership of the "/etc/shadow" file with the following command:n1To check the ownership of /etc/shadow ,
2 2run the command:
3$ sudo stat -c "%U %n" /etc/shadow3 $ sudo stat -c "%U %n" /etc/shadow
4 4If properly configured, the output should indicate the following owner:
5root /etc/shadow5root /etc/shadow
66
t7If "/etc/shadow" file does not have an owner of "root", this is a finding.t7If /etc/shadow does not have an owner of root, then this is a finding.

Fix

f1Change the owner of the file /etc/shadow to root by running the following command:f1Change the owner of the file /etc/shadow to root by running the following command:
t2 t
3$ sudo chown root /etc/shadow2$ sudo chown root /etc/shadow

CCE-84130-4 - sysctl_net_ipv6_conf_default_accept_source_route

Check

f1Verify RHEL 9 does not accept IPv6 source-routed packets by default.f1Verify RHEL 9 does not accept IPv6 source-routed packets by default.
22
3Note: If IPv6 is disabled on the system, this requirement is Not Applicable.3Note: If IPv6 is disabled on the system, this requirement is Not Applicable.
44
5Check the value of the accept source route variable with the following command:5Check the value of the accept source route variable with the following command:
66
t7$ sysctl net.ipv6.conf.default.accept_source_routet7$ sudo sysctl net.ipv6.conf.default.accept_source_route
88
9net.ipv6.conf.default.accept_source_route = 09net.ipv6.conf.default.accept_source_route = 0
1010
11If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.11If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.
1212
13Check that the configuration files are present to enable this network parameter.13Check that the configuration files are present to enable this network parameter.
1414
15$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv6.conf.default.accept_source_route | tail -115$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv6.conf.default.accept_source_route | tail -1
1616
17net.ipv6.conf.default.accept_source_route = 017net.ipv6.conf.default.accept_source_route = 0
1818
19If "net.ipv6.conf.default.accept_source_route" is not set to "0" or is missing, this is a finding.19If "net.ipv6.conf.default.accept_source_route" is not set to "0" or is missing, this is a finding.

Fix

f1Configure RHEL 9 to not forward IPv6 source-routed packets by default.f1Configure RHEL 9 to not forward IPv6 source-routed packets by default.
22
3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:
44
t5net.ipv6.conf.default.accept_source_route = 0t5net.ipv6.conf.default.accept_source_route=0
66
7Load settings from all system configuration files with the following command:7Load settings from all system configuration files with the following command:
88
9$ sudo sysctl --system9$ sudo sysctl --system

CCE-83782-3 - audit_rules_login_events_tallylog

Requirement

t1 RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /var/log/tallylog.t1RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /var/log/tallylog.

CCE-84170-0 - file_groupowner_cron_daily

Check

n1Verify the group ownership of all cron configuration files with the following command:n1To check the group ownership of all cron configuration files,
2 2run the command:
3$ stat -c "%G %n" /etc/cron*3 $ sudo stat -c "%G %n" /etc/cron*
4 4If properly configured, the output should indicate the following group-owner for all files:
5root /etc/cron.d5root /etc/cron.d
6root /etc/cron.daily6root /etc/cron.daily
7root /etc/cron.deny7root /etc/cron.deny
8root /etc/cron.hourly8root /etc/cron.hourly
9root /etc/cron.monthly9root /etc/cron.monthly
10root /etc/crontab10root /etc/crontab
11root /etc/cron.weekly11root /etc/cron.weekly
1212
tt13 
13If any crontab is not group owned by root, this is a finding.14If any crontab is not group owned by group, this is a finding.

CCE-83468-9 - partition_for_home

Check

n1Verify that a separate file system/partition has been created for "/home" with the following command:n1Verify that a separate file system/partition has been created for  /home  with the following command:
22
n3$ mount | grep /homen3 $ mountpoint /home
44
n5UUID=fba5000f-2ffa-4417-90eb-8c54ae74a32f on /home type ext4 (rw,nodev,nosuid,noexec,seclabel)n
65
t7If a separate entry for "/home" is not in use, this is a finding.t6If "/home is is not a mountpoint" is returned, then this is a finding.

Fix

t1Migrate the "/home" directory onto a separate file system/partition.t1Migrate the "/home" directory onto a separate file system.

CCE-90819-4 - file_permissions_sshd_pub_key

Check

n1Verify the SSH public host key files have mode of "0644" or less permissive with the following command:n1Verify the SSH public host key files have mode "0644" or less permissive with the following command:
22
3Note: SSH public key files may be found in other directories on the system depending on the installation.3Note: SSH public key files may be found in other directories on the system depending on the installation.
44
5$ sudo stat -c "%a %n" /etc/ssh/*.pub5$ sudo stat -c "%a %n" /etc/ssh/*.pub
66
7644 /etc/ssh/ssh_host_dsa_key.pub7644 /etc/ssh/ssh_host_dsa_key.pub
8644 /etc/ssh/ssh_host_ecdsa_key.pub8644 /etc/ssh/ssh_host_ecdsa_key.pub
9644 /etc/ssh/ssh_host_ed25519_key.pub9644 /etc/ssh/ssh_host_ed25519_key.pub
10644 /etc/ssh/ssh_host_rsa_key.pub10644 /etc/ssh/ssh_host_rsa_key.pub
1111
tt12 
12If any key.pub file has a mode more permissive than "0644", this is a finding.13If any key.pub file has a mode more permissive than "0644", this is a finding.

CCE-86280-5 - package_pcsc-lite_installed

Check

t1Verify that RHEL 9 has the pcsc-lite package installed with the following command:t1Verify that RHEL 9 has the pcsc-lite package installed with the following command:$sudo dnf list --installed pcsc-litepcsc-lite.x86_641.9.4-1.el9If a pcsc-lite package is not installed, this is a finding.
2 
3$sudo dnf list --installed pcsc-lite
4 
5pcsc-lite.x86_64        1.9.4-1.el9
6 
7If a pcsc-lite package is not installed, this is a finding.

CCE-87332-3 - harden_sshd_ciphers_opensshserver_conf_crypto_policy

Check

t1Verify the SSH server is configured to use only ciphers employing FIPS 140-3 approved algorithms with the following command:t1Verify the SSH server is configured to use only ciphers employing FIPS 140-3-approved algorithms with the following command:
22
3$ sudo grep -i ciphers /etc/crypto-policies/back-ends/opensshserver.config3$ sudo grep -i ciphers /etc/crypto-policies/back-ends/opensshserver.config
44
5Ciphers aes256-ctr,aes192-ctr,aes128-ctr5Ciphers aes256-ctr,aes192-ctr,aes128-ctr
66
7If the cipher entries in the "opensshserver.config" file have any ciphers other than "aes256-ctr,aes192-ctr,aes128-ctr", the order differs from the example above, they are missing, or commented out, this is a finding.7If the cipher entries in the "opensshserver.config" file have any ciphers other than "aes256-ctr,aes192-ctr,aes128-ctr", the order differs from the example above, they are missing, or commented out, this is a finding.

Fix

n1Configure the RHEL 9 SSH server to use only ciphers employing FIPS 140-3 approved algorithms by updating the "/etc/crypto-policies/back-ends/opensshserver.config" file with the following line:n1Configure the RHEL 9 SSH server to use only ciphers employing FIPS 140-3-approved algorithms by updating the "/etc/crypto-policies/back-ends/opensshserver.config" file with the following line:
22
t3Ciphers aes256-ctr,aes192-ctr,aes128-ctrt3Ciphers=aes256-ctr,aes192-ctr,aes128-ctr
44
5A reboot is required for the changes to take effect.5A reboot is required for the changes to take effect.

CCE-87077-4 - chronyd_server_directive

Vul_Discussion

t1Inaccurate 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.t
2 
3Synchronizing internal information system clocks provides uniformity of time stamps for information systems with multiple system clocks and systems connected over a network.
4 
5Depending on the infrastruture being used the "pool" directive may not be supported.1Depending on the infrastruture being used the "pool" directive may not be supported.

Check

n1Verify RHEL 9 is securely comparing internal information system clocks at least every 24 hours with an NTP server with the following commands:n1Run the following command and verify that time sources are only configure with "server" directive:
2 # grep -E "^(server|pool)" /etc/chrony.conf
3A line with the appropriate server should be returned, any line returned starting with "pool" is a finding.
24
t3$ sudo grep maxpoll /etc/chrony.conft5If an authoritative remote time server is not configured or configured with pool directive, then this is a finding.
4 
5server 0.us.pool.ntp.mil iburst maxpoll 16
6 
7If the "maxpoll" option is set to a number greater than 16 or the line is commented out, this is a finding.
8 
9Verify the "chrony.conf" file is configured to an authoritative DoD time source by running the following command:
10 
11$ sudo grep -i server /etc/chrony.conf
12server 0.us.pool.ntp.mil
13 
14If the parameter "server" is not set or is not set to an authoritative DoD time source, this is a finding.

CCE-90817-8 - file_groupowner_sshd_config

Check

f1Verify the group ownership of the "/etc/ssh/sshd_config" file with the following command:f1Verify the group ownership of the "/etc/ssh/sshd_config" file with the following command:
22
3$ ls -al /etc/ssh/sshd_config3$ ls -al /etc/ssh/sshd_config
44
5rw-------. 1 root root 3669 Feb 22 11:34 /etc/ssh/sshd_config5rw-------. 1 root root 3669 Feb 22 11:34 /etc/ssh/sshd_config
66
t7If the "/etc/ssh/sshd_config" file does not have a group owner of "root", this is a finding.t7If the "/etc/ssh/sshd_config" file does not have a group owner of "root", then this is a finding.

CCE-86722-6 - sshd_enable_pam

Requirement

t1RHEL 9 must enable the Pluggable Authenitcation Module (PAM) interface for SSHD.t1RHEL 9 must enable the Pluggable Authenitcation Module interface for SSHD.

Check

t1Verify the RHEL9 SSHD is configured to allow for the UsePAM interface with the following command:t1Verify the RHEL 9 SSHD is configure to allow for the UsePAM interface with the following command:
22
3$ sudo grep -i usepam /etc/ssh/sshd_config3$ sudo grep -i usepam /etc/ssh/sshd_config
44
5UsePAM yes5UsePAM yes
66
7If the "UsePAM" keyword is set to "no", is missing, or is commented out, this is a finding.7If the "UsePAM" keyword is set to "no", is missing, or is commented out, this is a finding.

Fix

t1Configure the RHEL9 SSHD to use the UsePAM interface add or modify the following line in "/etc/ssh/sshd_config".t1Configure the RHEL 9 SSHD to use the UsePAM interface add or modify the following line in "/etc/ssh/sshd_config".
22
3UsePAM yes3UsePAM yes
44
5Restart the SSH daemon for the settings to take effect:5Restart the SSH daemon for the settings to take effect:
66
7$ sudo systemctl restart sshd.service7$ sudo systemctl restart sshd.service

CCE-83457-2 - ensure_gpgcheck_globally_activated

Vul_Discussion

t1Alan Mayt1Changes 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.
2 
3Accordingly, patches, service packs, device drivers, or operating system components must be signed with a certificate recognized and approved by the organization.
4 
5Verifying the authenticity of the software prior to installation validates the integrity of the patch or upgrade received from a vendor. This verifies the software has not been tampered with and that it has been provided by a trusted vendor. Self-signed certificates are disallowed by this requirement. The operating system should not have to verify the software again. This requirement does not mandate DoD certificates for this purpose; however, the certificate used to verify the software must be from an approved CA.

CCE-83716-1 - audit_rules_immutable

Check

f1Verify the audit system prevents unauthorized changes with the following command:f1Verify the audit system prevents unauthorized changes with the following command:
22
3$ sudo grep "^\s*[^#]" /etc/audit/audit.rules | tail -13$ sudo grep "^\s*[^#]" /etc/audit/audit.rules | tail -1
44
5-e 25-e 2
66
t7If 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.t7If the audit system is not set to be immutable by adding the "-e 2" option to the end of "/etc/audit/audit.rules", then this is a finding.

CCE-84186-6 - file_groupowner_cron_hourly

Check

n1Verify the ownership of all cron configuration files with the command:n1To check the group ownership of all cron configuration files,
2 2run the command:
3$ stat -c "%U %n" /etc/cron*3 $ sudo stat -c "%U %n" /etc/cron*
4 4If properly configured, the output should indicate the following owner for all files:
5root /etc/cron.d5root /etc/cron.d
6root /etc/cron.daily6root /etc/cron.daily
7root /etc/cron.deny7root /etc/cron.deny
8root /etc/cron.hourly8root /etc/cron.hourly
9root /etc/cron.monthly9root /etc/cron.monthly
10root /etc/crontab10root /etc/crontab
11root /etc/cron.weekly11root /etc/cron.weekly
1212
tt13 
13If any crontab is not owned by root, this is a finding.14If any crontab is not owned by group, this is a finding.

CCE-90843-4 - package_aide_installed

Check

t1Verify that RHEL 9 has the aide package installed with the following command:t1Verify that RHEL 9 has the aide package installed with the following command:$sudo dnf list --installed aideaide.x86_640.16.100.el9If the aide package is not installed, this is a finding.
2 
3$sudo dnf list --installed aide
4 
5aide.x86_64     0.16.100.el9
6 
7If the aide package is not installed, this is a finding.

CCE-83934-0 - file_permissions_etc_group

Requirement

t1The RHEL 9 /etc/group file must have mode 0644 or less permissive to prevent unauthorized access.t1The RHEL 9 /etc/group file must have 0644 or less permissive to prevent unauthorized access.

Check

n1Verify that the "/etc/group" file has mode "0644" or less permissive with the following command:n1To check the permissions of /etc/group ,
2 2run the command:
3$ sudo stat -c "%a %n" /etc/group3 $ sudo stat -c "%a %n" /etc/group
4 4If properly configured, the output should indicate the following permissions:
5644 /etc/group5644 /etc/group
66
t7If a value of "0644" or less permissive is not returned, this is a finding.t7If /etc/group does not have unix mode 644, then this is a finding.

Fix

t1Change the mode of the file "/etc/group" to "0644" by running the following command:t1Change the permissions of the file "/etc/group" to "0644" by running the following command:
2 
3$ sudo chmod 0644 /etc/group2$ sudo chmod 0644 /etc/group

CCE-90829-3 - service_auditd_enabled

Requirement

t1The RHEL9 audit service must be enabled.t1The RHEL 9 audit service must be enabled.

CCE-90826-9 - postfix_client_configure_mail_alias

Vul_Discussion

t1 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.t1It 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.
22
3Audit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded.3Audit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded.
44
5This 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.5This 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.

Check

n1Verify that RHEL 9 is configured to notify the appropraite interactive users in the event of an audit processing failure.n1Find the list of alias maps used by the Postfix mail server for root.
22
3Find the alias maps that are being used with the following command:3Find the alias maps that are being used with the following command:
44
5$ postconf alias_maps5$ postconf alias_maps
n6 n
7alias_maps = hash:/etc/aliases6alias_maps = hash:/etc/aliases
87
9Query the Postfix alias maps for an alias for the root user with the following command:8Query the Postfix alias maps for an alias for the root user with the following command:
109
11$ postmap -q root hash:/etc/aliases10$ postmap -q root hash:/etc/aliases
12isso11isso
1312
t14If an alias is not set, this is a finding.t13If an alias is not set, then this is a finding.

CCE-84124-7 - sysctl_net_ipv6_conf_default_accept_ra

Check

f1Verify RHEL 9 does not accept router advertisements on all IPv6 interfaces by default, unless the system is a router.f1Verify RHEL 9 does not accept router advertisements on all IPv6 interfaces by default, unless the system is a router.
22
3Note: If IPv6 is disabled on the system, this requirement is not applicable.3Note: If IPv6 is disabled on the system, this requirement is not applicable.
44
5Check to see if router advertisements are not accepted by default by using the following command:5Check to see if router advertisements are not accepted by default by using the following command:
66
t7$ sysctl net.ipv6.conf.default.accept_rat7$ sudo sysctl net.ipv6.conf.default.accept_ra
88
9net.ipv6.conf.default.accept_ra = 09net.ipv6.conf.default.accept_ra = 0
1010
11If the "accept_ra" value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.11If the "accept_ra" value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.
1212
13Check that the configuration files are present to enable this network parameter.13Check that the configuration files are present to enable this network parameter.
1414
15$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv6.conf.default.accept_ra | tail -115$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv6.conf.default.accept_ra | tail -1
1616
17net.ipv6.conf.default.accept_ra = 017net.ipv6.conf.default.accept_ra = 0
1818
19If "net.ipv6.conf.default.accept_ra" is not set to "0" or is missing, this is a finding.19If "net.ipv6.conf.default.accept_ra" is not set to "0" or is missing, this is a finding.

Fix

f1Configure RHEL 9 to not accept router advertisements on all IPv6 interfaces by default unless the system is a router.f1Configure RHEL 9 to not accept router advertisements on all IPv6 interfaces by default unless the system is a router.
22
3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:
44
t5net.ipv6.conf.default.accept_ra = 0t5net.ipv6.conf.default.accept_ra=0
66
7Load settings from all system configuration files with the following command:7Load settings from all system configuration files with the following command:
88
9$ sudo sysctl --system9$ sudo sysctl --system

CCE-89284-4 - file_permissions_etc_audit_auditd

Check

n1Verify the mode of /etc/audit/auditd.conf with the command:n1To check the permissions of /etc/audit/auditd.conf ,
2 2run the command:
3$ sudo stat -c "%a %n" /etc/audit/auditd.conf3 $ sudo stat -c "%a %n" /etc/audit/auditd.conf
4 4If properly configured, the output should indicate the following permissions:
5640 /etc/audit/auditd.conf5640 /etc/audit/auditd.conf
66
t7If "/etc/audit/auditd.conf" does not have a mode of "0640", this is a finding.t7If /etc/audit/auditd.conf does not have unix mode 0640, then this is a finding.

Fix

t1Set the mode of /etc/audit/auditd.conf file to 0640 with the command:t1To properly set the permissions of /etc/audit/auditd.conf , run the command:
2 
3$ sudo chmod 0640 /etc/audit/auditd.conf2 $ sudo chmod 0640 /etc/audit/auditd.conf

CCE-85873-8 - accounts_password_pam_pwquality_system_auth

Check

n1Verify RHEL 9 uses "pwquality" to enforce the password complexity rules in the system-auth file with the following command:n1To check if pam_pwhistory.so is enabled in system-auth, run the following command:
2 $ grep pam_pwquality /etc/pam.d/system-auth
3The output should be similar to the following:
4 password requisite pam_pwquality.so
25
t3$ cat /etc/pam.d/system-auth | grep pam_pwqualityt6If pam_pwquality.so is not enabled in system-auth, then this is a finding.
4 
5password required pam_pwquality.so
6 
7If the command does not return a line containing the value "pam_pwquality.so", or the line is commented out, this is a finding.

CCE-83544-7 - sudo_remove_no_authenticate

Check

t1 Verify that "/etc/sudoers" has no occurrences of "!authenticate" with the following command:t1Verify that "/etc/sudoers" has no occurrences of "!authenticate" with the following command:
22
3$ sudo grep -i !authenticate /etc/sudoers /etc/sudoers.d/*3$ sudo grep -i !authenticate /etc/sudoers /etc/sudoers.d/*
44
5If any occurrences of "!authenticate" are returned, this is a finding.5If any occurrences of "!authenticate" are returned, this is a finding.

CCE-89064-0 - postfix_client_configure_mail_alias_postmaster

Check

f1Without cryptographic integrity protections, information can be altered by unauthorized users without detection.f1Without cryptographic integrity protections, information can be altered by unauthorized users without detection.
22
t3Transport Layer Security (TLS) encryption is a required security setting as a number of known vulnerabilities have been reported against Secure Sockets Layer (SSL) and earlier versions of TLS. Encryption of private information is essential to ensuring data confidentiality. If private information is not encrypted, it can be intercepted and easily read by an unauthorized party. SQL Server must use a minimum of FIPS 140-3 approved TLS version 1.2, and all non-FIPS-approved SSL and TLS versions must be disabled. NIST 800-53 specifies the preferred configurations for government systems.t3Transport Layer Security (TLS) encryption is a required security setting as a number of known vulnerabilities have been reported against Secure Sockets Layer (SSL) and earlier versions of TLS. Encryption of private information is essential to ensuring data confidentiality. If private information is not encrypted, it can be intercepted and easily read by an unauthorized party. SQL Server must use a minimum of FIPS 140-3-approved TLS version 1.2, and all non-FIPS-approved SSL and TLS versions must be disabled. NIST 800-53 specifies the preferred configurations for government systems.
44
5Cryptographic 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.5Cryptographic 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.

CCE-86917-2 - account_password_pam_faillock_system_auth

Check

f1Verify the pam_faillock.so module is present in the "/etc/pam.d/system-auth" file:f1Verify the pam_faillock.so module is present in the "/etc/pam.d/system-auth" file:
22
n3$ grep pam_faillock.so /etc/pam.d/system-authn3$ sudo grep pam_faillock.so /etc/pam.d/system-auth
44
5auth required pam_faillock.so preauth5auth required pam_faillock.so preauth
6auth required pam_faillock.so authfail6auth required pam_faillock.so authfail
7account required pam_faillock.so7account required pam_faillock.so
88
t9If 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.t9If 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, then this is a finding.

CCE-90848-3 - partition_for_var_log

Check

n1Verify that a separate file system/partition has been created for "/var/log" with the following command:n1Verify that a separate file system/partition has been created for  /var/log  with the following command:
22
n3$ mount | grep /var/logn3 $ mountpoint /var/log
44
n5UUID=c274f65f-c5b5-4486-b021-bee96feb8b21 /var/log xfs noatime,nobarrier 1 2n
65
t7If a separate entry for "/var/log" is not in use, this is a finding.t6If "/var/log is is not a mountpoint" is returned, then this is a finding.

CCE-84185-8 - security_patches_up_to_date

Check

n1Verify RHEL9 security patches and updates are installed and up to date.    Updates are required to be applied with a frequency determined by organizational policy.n1Verify RHEL 9 security patches and updates are installed and up to date.    Updates are required to be applied with a frequency determined by organizational policy.
22
3Obtain the list of available package security updates from Red Hat. The URL for updates is https://access.redhat.com/errata-search/.    It is important to note that updates provided by Red Hat may not be present on the system if the underlying packages are not installed.3Obtain the list of available package security updates from Red Hat. The URL for updates is https://access.redhat.com/errata-search/.    It is important to note that updates provided by Red Hat may not be present on the system if the underlying packages are not installed.
44
5Check that the available package security updates have been installed on the system with the following command:5Check that the available package security updates have been installed on the system with the following command:
66
7$ dnf history list | more7$ dnf history list | more
88
9    ID | Command line | Date and time | Action(s) | Altered9    ID | Command line | Date and time | Action(s) | Altered
10-------------------------------------------------------------------------------10-------------------------------------------------------------------------------
11   70 | install aide | 2020-03-05 10:58 | Install | 111   70 | install aide | 2020-03-05 10:58 | Install | 1
12   69 | update -y | 2020-03-04 14:34 | Update | 18 EE12   69 | update -y | 2020-03-04 14:34 | Update | 18 EE
13   68 | install vlc | 2020-02-21 17:12 | Install | 2113   68 | install vlc | 2020-02-21 17:12 | Install | 21
14   67 | update -y | 2020-02-21 17:04 | Update | 7 EE14   67 | update -y | 2020-02-21 17:04 | Update | 7 EE
1515
16Typical update frequency may be overridden by Information Assurance Vulnerability Alert (IAVA) notifications from CYBERCOM.16Typical update frequency may be overridden by Information Assurance Vulnerability Alert (IAVA) notifications from CYBERCOM.
1717
t18If the system is in non-compliance with the organizational patching policy, this is a finding.t18If the system is in non-compliance with the organizational patching policy, then this is a finding.

Fix

t1Install RHEL9 security patches and updates at the organizationally-defined frequency. If system updates are installed via a centralized repository that is configured on the system, you can install all updates with the following command:t1Install RHEL 9 security patches and updates at the organizationally-defined frequency. If system updates are installed via a centralized repository that is configured on the system, you can install all updates with the following command:
22
3$ sudo dnf update3$ sudo dnf update

CCE-83931-6 - file_permissions_etc_passwd

Requirement

t1The RHEL 9 /etc/passwd file must have mode 0644 or less permissive to prevent unauthorized access.t1The RHEL 9 /etc/group file must have 0644 or less permissive to prevent unauthorized access.

Check

n1Verify that the "/etc/passwd" file has mode "0644" or less permissive with the following command:n1To check the permissions of /etc/passwd ,
2run the command:
3 $ sudo stat -c "%a %n"/etc/passwd
4If properly configured, the output should indicate the following permissions:
5644
26
t3$ sudo stat -c "%a %n" /etc/passwdt7If /etc/passwd does not have unix mode 644, then this is a finding.
4 
5644 /etc/passwd
6 
7If a value of "0644" or less permissive is not returned, this is a finding.

Fix

t1Change the mode of the file "/etc/passwd" to "0644" by running the following command:t1Change the permissions of the file "/etc/group" to "0644" by running the following command:
2 
3$ sudo chmod 0644 /etc/passwd2$ sudo chmod 0644 /etc/group

CCE-83884-7 - mount_option_boot_nodev

Requirement

t1RHEL 9 must mount /boot with the nodev option.t1RHEL 9 Must Prevent Program Execution In Accordance With Local Policies Regarding Software Program Usage And Restrictions And/Or Rules Authorizing The Terms And Conditions Of Software Program Usage.

Check

n1Verify that the "/boot" mount point has the "nodev" option is with the following command:n1To verify the "nodev" option is configured for the "/boot" mount point,
22
n3Note: This control is not applicable to RHEL 9 system booted UEFI.n3This control is not applicable to RHEL 9 system booted UEFI.
44
n5$ sudo mount | grep '\s/boot\'n5Run the following
66
t7/dev/sda1 on /boot type xfs (rw,nodev,relatime,seclabel,attr2)t7$ sudo mount | grep '\s/boot\
8 
9The output should show the corresponding mount point along with the "nodev" setting in parentheses.
10 
811
9If the "/boot" file system does not have the "nodev" option set, this is a finding.12If the "/boot" file system does not have the "nodev" option set, this is a finding.

CCE-90820-2 - file_permissions_sshd_private_key

Check

t1Verify the SSH private host key files have mode of "0600" or less permissive with the following command:t1Verify the SSH private host key files have mode "0600" or less permissive with the following command:
22
3$ ls -l /etc/ssh/*_key3$ ls -l /etc/ssh/*_key
44
5600 /etc/ssh/ssh_host_dsa_key5600 /etc/ssh/ssh_host_dsa_key
6600 /etc/ssh/ssh_host_ecdsa_key6600 /etc/ssh/ssh_host_ecdsa_key
7600 /etc/ssh/ssh_host_ed25519_key7600 /etc/ssh/ssh_host_ed25519_key
8600 /etc/ssh/ssh_host_rsa_key8600 /etc/ssh/ssh_host_rsa_key
99
10If any private host key file has a mode more permissive than "0600", this is a finding.10If any private host key file has a mode more permissive than "0600", this is a finding.

CCE-84203-9 - package_usbguard_installed

Check

t1Alan Mayt1Verify that RHEL 9 usbguard package is installed with the following command:
2 
3$ sudo dnf list --installed usbguard
4 
5usbguard.x86_64      1.0.0-10.el9
6 
7If the usbguard package is not installed, this is a finding.

CCE-83446-5 - configure_libreswan_crypto_policy

Check

n1Verify that the IPSec service uses the system crypto policy with the following command:n1Verify that the IPSec service uses the system crypto policy.
22
t3Note: If the ipsec service is not installed this requirement is Not Applicable.t3If the ipsec service is not installed is not applicable.
4 
5Check to see if the "IPsec" service is active with the following command:
46
5$ systemctl status ipsec7$ systemctl status ipsec
68
7ipsec.service - Internet Key Exchange (IKE) Protocol Daemon for IPsec9ipsec.service - Internet Key Exchange (IKE) Protocol Daemon for IPsec
8Loaded: loaded (/usr/lib/systemd/system/ipsec.service; disabled)10Loaded: loaded (/usr/lib/systemd/system/ipsec.service; disabled)
9Active: inactive (dead)11Active: inactive (dead)
1012
11If the "IPsec" service is active, check to see if it is using the system crypto policy with the following command:13If the "IPsec" service is active, check to see if it is using the system crypto policy with the following command:
1214
13$ sudo grep include /etc/ipsec.conf /etc/ipsec.d/*.conf15$ sudo grep include /etc/ipsec.conf /etc/ipsec.d/*.conf
1416
15/etc/ipsec.conf:include /etc/crypto-policies/back-ends/libreswan.config17/etc/ipsec.conf:include /etc/crypto-policies/back-ends/libreswan.config
1618
17If the "IPsec" service is active and the ipsec configuration file does not contain "include /etc/crypto-policies/back-ends/libreswan.config", this is a finding.19If the "IPsec" service is active and the ipsec configuration file does not contain "include /etc/crypto-policies/back-ends/libreswan.config", this is a finding.

CCE-86228-4 - file_audit_tools_permissions

Vul_Discussion

f1Protecting 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.f1Protecting 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.
22
t3RHEL9 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.t3RHEL 9 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.
44
5Audit 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.5Audit 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.

CCE-83933-2 - file_groupowner_backup_etc_passwd

Check

n1Verify the group ownership of the "/etc/passwd-" file with the following command:n1To check the group ownership of /etc/passwd- ,
2run the command:
3 $ sudo stat -c "%G %n" /etc/passwd-
4If properly configured, the output should indicate the following group-owner:
5 root
26
t3$ sudo stat -c "%G %n" /etc/passwd-t
4 
5root /etc/passwd-
6 
7If "/etc/passwd-" file does not have a group owner of "root", this is a finding.7If /etc/passwd- does not have a group owner of root, then this is a finding.

Fix

f1Change the group of the file /etc/passwd- to root by running the following command:f1Change the group of the file /etc/passwd- to root by running the following command:
t2 t
3$ sudo chgrp root /etc/passwd-2$ sudo chgrp root /etc/passwd-

CCE-83783-1 - audit_rules_login_events_faillock

Requirement

t1 RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /var/run/faillock.t1RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /var/run/faillock.

CCE-83949-8 - file_owner_backup_etc_shadow

Requirement

t1The RHEL 9 /etc/shadow- file must be owned by root.t1The RHEL 9 /etc/shadow- file must be group-owned by root.

Check

n1Verify the ownership of the "/etc/shadow-" file with the following command:n1To check the ownership of /etc/shadow- ,
2run the command:
3 $ sudo stat -c "%U %n" /etc/shadow-
4If properly configured, the output should indicate the following owner:
5 root /etc/shadow
26
t3$ sudo stat -c "%U %n" /etc/shadow-t
4 
5root /etc/shadow-
6 
7If "/etc/shadow-" file does not have an owner of "root", this is a finding.7If /etc/shadow- does not have an owner of root, then this is a finding.

Fix

t1Change the owner of the file /etc/shadow- to root by running the following command:t1Change the group of the file /etc/shadow- to root by running the following command:
2 
3$ sudo chown root /etc/shadow-2$ sudo chgrp root /etc/shadow-

CCE-84120-5 - sysctl_net_ipv6_conf_all_accept_ra

Fix

f1Configure RHEL 9 to not accept router advertisements on all IPv6 interfaces unless the system is a router.f1Configure RHEL 9 to not accept router advertisements on all IPv6 interfaces unless the system is a router.
22
3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:
44
t5net.ipv6.conf.all.accept_ra = 0t5net.ipv6.conf.all.accept_ra=0
66
7Load settings from all system configuration files with the following command:7Load settings from all system configuration files with the following command:
88
9$ sudo sysctl --system9$ sudo sysctl --system

CCE-84063-7 - package_rsyslog_installed

Check

t1Verify that RHEL 9 has the rsyslogd package installed with the following command:t1Verify that RHEL 9 has the rsyslogd package installed with the following command:$ sudo dnf list --installed rsyslogrsyslog.x86_64  8.2102.0-101.el9_0.1If the rsyslogd package is not installed, this is a finding.
2 
3$ sudo dnf list --installed rsyslog
4 
5rsyslog.x86_64    8.2102.0-101.el9_0.1
6 
7If the rsyslogd package is not installed, this is a finding.

CCE-83589-2 - accounts_passwords_pam_faillock_deny_root

Fix

f1Configure RHEL 9 to lock out the "root" account after a number of incorrect loginf1Configure RHEL 9 to lock out the "root" account after a number of incorrect login
2attempts using "pam_faillock.so", first enable the feature using the following command:2attempts using "pam_faillock.so", first enable the feature using the following command:
33
4$  sudo authselect enable-feature with-faillock4$  sudo authselect enable-feature with-faillock
55
6 Then edit the "/etc/security/faillock.conf" file as follows:6 Then edit the "/etc/security/faillock.conf" file as follows:
77
8  add or uncomment the following line:8  add or uncomment the following line:
9 even_deny_root9 even_deny_root
t10 t

CCE-90176-9 - audit_rules_sudoers

Requirement

t1 RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/sudoers.t1RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/sudoers.

CCE-83599-1 - package_tmux_installed

Check

t1Verify that RHEL 9 has the tmux package installed with the following command:t1Verify that RHEL 9 has the tmux package installed with the following command:$ sudo dnf list --installed tmuxtmux.x86_64  3.2a-4.el9If the tmux package is not installed, this is a finding.
2 
3$ sudo dnf list --installed tmux
4 
5tmux.x86_64       3.2a-4.el9
6 
7If the tmux package is not installed, this is a finding.

CCE-83945-6 - file_groupowner_etc_group

Check

n1Verify the group ownership of the "/etc/group" file with the following command:n1To check the group ownership of /etc/group ,
2run the command:
3 $ sudo stat -c "%G %n" /etc/group
4If properly configured, the output should indicate the following group-owner:
5 root /etc/group
26
t3$ sudo stat -c "%G %n" /etc/groupt
4 
5root /etc/group
6 
7If "/etc/group" file does not have a group owner of "root", this is a finding.7If /etc/group does not have a group owner of root, then this is a finding.

Fix

f1Change the group of the file /etc/group to root by running the following command:f1Change the group of the file /etc/group to root by running the following command:
n2 n
3$ sudo chgrp root /etc/group2$ sudo chgrp root /etc/group
t4 t
5 

CCE-90808-7 - sshd_disable_gssapi_auth

Check

f1Verify the SSH daemon does not allow GSSAPI authentication with the following command:f1Verify the SSH daemon does not allow GSSAPI authentication with the following command:
22
3$ sudo grep -ir gssapiauth  /etc/ssh/sshd_config /etc/ssh/sshd_config.d/*3$ sudo grep -ir gssapiauth  /etc/ssh/sshd_config /etc/ssh/sshd_config.d/*
44
5GSSAPIAuthentication no5GSSAPIAuthentication no
66
7If the value is returned as "yes", the returned line is commented out, no output is returned, and the use of GSSAPI authentication has not been documented with the ISSO, this is a finding.7If the value is returned as "yes", the returned line is commented out, no output is returned, and the use of GSSAPI authentication has not been documented with the ISSO, this is a finding.
88
9Fix Text: Configure the SSH daemon to not allow GSSAPI authentication.9Fix Text: Configure the SSH daemon to not allow GSSAPI authentication.
1010
t11If the required value is not set, this is a finding.t11If the required value is not set, then this is a finding.

CCE-83633-8 - accounts_tmout

Requirement

t1RHEL 9 must be configured so that all network connections associated with a communication session are terminated at the end of the session or after 15 minutes of inactivity from the user at a command prompt, except to fulfill documented and validated mission requirements.t1RHEL 9 Must Terminate All Network Connections Associated With A Communications Session At The End Of The Session, Or As Follows: For In-Band Management Sessions (Privileged Sessions), The Session Must Be Terminated After 10 Minutes Of Inactivity; And For User Sessions (Non-Privileged Session), The Session Must Be Terminated After 15 Minutes Of Inactivity, Except To Fulfill Documented And Validated Mission Requirements.

Check

n1Verify RHEL 9 terminates all network connections associated with a communications session at the end of the session or based on inactivity with the following command:n1Run the following command to ensure the "TMOUT" value is configured for all users
2on the system:
23
n3$ sudo grep -i tmout /etc/profile /etc/profile.d/*.shn4 $ sudo grep TMOUT /etc/profile /etc/profile.d/*.sh
45
n5etc/profile.d/tmout.sh:declare -xr TMOUT=900n6The output should return the following:
7 TMOUT=600
68
t7If "TMOUT" is not set to "900" or less in a script located in the /etc/profile.d/ directory to enforce session termination after inactivity, this is a finding.t9If value of TMOUT is not less than or equal to expected setting, then this is a finding.

Fix

n1Configure RHEL 9 to terminate user sessions after 900 seconds of inactivity.n1Configure RHEL 9 to terminate user sessions after 600 seconds of inactivity.
22
3Add or edit the following line in "/etc/profile.d/tmout.sh":3Add or edit the following line in "/etc/profile.d/tmout.sh":
44
t5 TMOUT=900t5 TMOUT=600

CCE-90125-6 - harden_sshd_ciphers_openssh_conf_crypto_policy

Check

t1Verify the SSH client is configured to use only ciphers employing FIPS 140-3 approved algorithms with the following command:t1Verify the SSH client is configured to use only ciphers employing FIPS 140-3-approved algorithms with the following command:
22
3$ sudo grep -i ciphers /etc/crypto-policies/back-ends/openssh.config3$ sudo grep -i ciphers /etc/crypto-policies/back-ends/openssh.config
44
5Ciphers aes256-ctr,aes192-ctr,aes128-ctr5Ciphers aes256-ctr,aes192-ctr,aes128-ctr
66
7If the cipher entries in the "openssh.config" file have any ciphers other than "aes256-ctr,aes192-ctr,aes128-ctr", the order differs from the example above, they are missing, or commented out, this is a finding.7If the cipher entries in the "openssh.config" file have any ciphers other than "aes256-ctr,aes192-ctr,aes128-ctr", the order differs from the example above, they are missing, or commented out, this is a finding.

Fix

n1Configure the RHEL 9 SSH client to use only ciphers employing FIPS 140-3 approved algorithms by updating the "/etc/crypto-policies/back-ends/openssh.config" file with the following line:n1Configure the RHEL 9 SSH client to use only ciphers employing FIPS 140-3-approved algorithms by updating the "/etc/crypto-policies/back-ends/openssh.config" file with the following line:
22
t3Ciphers aes256-ctr,aes192-ctr,aes128-ctrt3Ciphers=aes256-ctr,aes192-ctr,aes128-ctr
44
5A reboot is required for the changes to take effect.5A reboot is required for the changes to take effect.

CCE-90736-0 - tftpd_uses_secure_mode

Check

f1Verify the TFTP daemon is configured to operate in secure mode.f1Verify the TFTP daemon is configured to operate in secure mode.
22
3Check if a TFTP server is installed with the following command:3Check if a TFTP server is installed with the following command:
44
5$ sudo dnf list --installed tftp-server5$ sudo dnf list --installed tftp-server
66
7tftp-server.x86_64    5.2-35.el9.x86_647tftp-server.x86_64    5.2-35.el9.x86_64
88
n9If a TFTP server is not installed, this requirement is Not Applicable.n9If a TFTP server is not installed, this is Not Applicable.
1010
11If a TFTP server is installed, check for the server arguments with the following command:11If a TFTP server is installed, check for the server arguments with the following command:
1212
n13$ systemctl cat tftp | grep ExecStartn13$ systemctl cat tftp | grep ExecStart=
14ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot14ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot
1515
tt16 
16If the "ExecStart" line does not have a "-s" option, and a subdirectory is not assigned, this is a finding.17If the "ExecStart" line does not have a "-s" option, and a subdirectory is not assigned, this is a finding.

CCE-84003-3 - sysctl_net_ipv4_conf_default_accept_redirects

Check

f1Verify RHEL 9 will not accept IPv4 ICMP redirect messages.f1Verify RHEL 9 will not accept IPv4 ICMP redirect messages.
22
3Check the value of the default "accept_redirects" variables with the following command:3Check the value of the default "accept_redirects" variables with the following command:
44
t5$ sysctl net.ipv4.conf.default.accept_redirectst5$ sudo sysctl net.ipv4.conf.default.accept_redirects
66
7net.ipv4.conf.default.accept_redirects = 07net.ipv4.conf.default.accept_redirects = 0
88
9If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.9If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.
1010
11Check that the configuration files are present to enable this network parameter.11Check that the configuration files are present to enable this network parameter.
1212
13$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.conf.default.accept_redirects | tail -113$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.conf.default.accept_redirects | tail -1
1414
15net.ipv4.conf.default.accept_redirects = 015net.ipv4.conf.default.accept_redirects = 0
1616
17If "net.ipv4.conf.default.accept_redirects" is not set to "0" or is missing, this is a finding.17If "net.ipv4.conf.default.accept_redirects" is not set to "0" or is missing, this is a finding.

CCE-83464-8 - ensure_gpgcheck_never_disabled

Requirement

t1RHEL9 must have gpgcheck enabled for all repositories.t1RHEL 9 must have gpgcheck enabled for all repositories.

CCE-83842-5 - grub2_vsyscall_argument

Check

tt1Verify that GRUB 2 is configured to disable vsyscalls .
2 
1Verify the current GRUB 2 configuration disables vsyscalls with the following command:3Check that the current GRUB 2 configuration disables vsyscalls with the following command:
24
3$ sudo grubby --info=ALL | grep args | grep -v 'vsyscall=none'5$ sudo grubby --info=ALL | grep args | grep -v 'vsyscall=none'
46
5If any output is returned, this is a finding.7If any output is returned, this is a finding.
68
7Check that vsyscalls are disabled by default to persist in kernel updates with the following command:9Check that vsyscalls are disabled by default to persist in kernel updates with the following command:
810
9$ sudo grep vsyscall /etc/default/grub11$ sudo grep vsyscall /etc/default/grub
1012
11GRUB_CMDLINE_LINUX="vsyscall=none"13GRUB_CMDLINE_LINUX="vsyscall=none"
1214
13If "vsyscall" is not set to "none", is missing or commented out and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.15If "vsyscall" is not set to "none", is missing or commented out and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.

CCE-83487-9 - partition_for_var_tmp

Check

n1Verify that a separate file system/partition has been created for "/var/tmp" with the following command:n1Verify that a separate file system/partition has been created for  /var/tmp  with the following command:
22
n3$ mount | grep /var/tmpn3 $ mountpoint /var/tmp
44
n5UUID=c274f65f-c5b5-4379-b017-bee96feb7a34 /var/log xfs noatime,nobarrier 1 2n
65
t7If a separate entry for "/var/tmp" is not in use, this is a finding.t6If "/var/tmp is is not a mountpoint" is returned, then this is a finding.

CCE-84001-7 - sysctl_net_ipv4_conf_all_accept_source_route

Check

f1Verify RHEL 9 will not accept IPv4 source-routed packets.f1Verify RHEL 9 will not accept IPv4 source-routed packets.
22
3Check the value of the all "accept_source_route" variables with the following command:3Check the value of the all "accept_source_route" variables with the following command:
44
t5$ sysctl net.ipv4.conf.all.accept_source_routet5$ sudo sysctl net.ipv4.conf.all.accept_source_route
66
7net.ipv4.conf.all.accept_source_route = 07net.ipv4.conf.all.accept_source_route = 0
88
9If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.9If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.
1010
11Check that the configuration files are present to enable this network parameter.11Check that the configuration files are present to enable this network parameter.
1212
13$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.conf.all.accept_source_route | tail -113$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.conf.all.accept_source_route | tail -1
1414
15net.ipv4.conf.all.accept_source_route = 015net.ipv4.conf.all.accept_source_route = 0
1616
17If "net.ipv4.conf.all.accept_source_route" is not set to "0" or is missing, this is a finding.17If "net.ipv4.conf.all.accept_source_route" is not set to "0" or is missing, this is a finding.

CCE-85959-5 - audit_privileged_commands_shutdown

Check

n1Verify that RHEL 9 is configured to audit the execution of the "shutdown" command with the following command:n1Verify that an audit event is generated for any successful/unsuccessful use of the shutdown command by performing the following command to check the file system rules in "/etc/audit/audit.rules":
22
n3$ sudo auditctl -l | grep shutdownn3$ sudo grep -w shutdown /etc/audit/audit.rules
44
5-a always,exit -F path=/usr/sbin/shutdown -F perm=x -F auid>=1000 -F auid!=unset -k privileged-shutdown5-a always,exit -F path=/usr/sbin/shutdown -F perm=x -F auid>=1000 -F auid!=unset -k privileged-shutdown
66
t7If the command does not return a line, or the line is commented out, this is a finding.t7If the command does not return a line, or the line is commented out, then this is a finding.

CCE-83848-2 - file_groupowner_grub2_cfg

Requirement

t1The RHEL 9 /boot/grub2/grub.cfg file must be owned by root.t1The RHEL 9 /boot/grub2/grub.cfg file must be group-owned by root.

Check

n1Verify the ownership of the "/boot/grub2/grub.cfg" file with the following command:n1To check the group ownership of /boot/grub2/grub.cfg ,
2run the command:
3 $ sudo stat -c "%G %n" /boot/grub2/grub.cfg
4If properly configured, the output should indicate the following group-owner:
5 root /boot/grub2/grub.cfg
26
t3$ sudo stat -c "%U %n" /boot/grub2/grub.cfgt
4 
5root /boot/grub2/grub.cfg
6 
7If "/boot/grub2/grub.cfg" file does not have an owner of "root", this is a finding.7If /boot/grub2/grub.cfg does not have a group owner of root, then this is a finding.

Fix

t1Change the owner of the file /boot/grub2/grub.cfg to root by running the following command:t1Change the group of the file /boot/grub2/grub.cfg to root by running the following command:
2 
3$ sudo chown root /boot/grub2/grub.cfg2$ sudo chgrp root /boot/grub2/grub.cfg

CCE-83714-6 - audit_rules_usergroup_modification_passwd

Requirement

t1 RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/passwd.t1RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/passwd.

CCE-83999-3 - sysctl_net_ipv4_conf_default_send_redirects

Check

f1Verify RHEL 9 does not allow interfaces to perform Internet Protocol version 4 (IPv4) ICMP redirects by default.f1Verify RHEL 9 does not allow interfaces to perform Internet Protocol version 4 (IPv4) ICMP redirects by default.
22
3Check the value of the "default send_redirects" variables with the following command:3Check the value of the "default send_redirects" variables with the following command:
44
t5$ sysctl net.ipv4.conf.default.send_redirectst5$ sudo sysctl net.ipv4.conf.default.send_redirects
66
7net.ipv4.conf.default.send_redirects=07net.ipv4.conf.default.send_redirects=0
88
9If the returned line does not have a value of "0", or a line is not returned, this is a finding.9If the returned line does not have a value of "0", or a line is not returned, this is a finding.
1010
11Check that the configuration files are present to enable this network parameter.11Check that the configuration files are present to enable this network parameter.
1212
13$  { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.conf.default.send_redirects | tail -113$  { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.conf.default.send_redirects | tail -1
1414
15net.ipv4.conf.default.send_redirects = 015net.ipv4.conf.default.send_redirects = 0
1616
17If "net.ipv4.conf.default.send_redirects" is not set to "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, or is missing, this is a finding.17If "net.ipv4.conf.default.send_redirects" is not set to "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, or is missing, this is a finding.

CCE-85956-1 - audit_privileged_commands_init

Check

n1Verify that RHEL 9 is configured to audit the execution of the "init" command with the following command:n1Verify that an audit event is generated for any successful/unsuccessful use of the init command by performing the following command to check the file system rules in "/etc/audit/audit.rules":
22
n3$ sudo auditctl -l | grep initn3$ sudo grep -w init /etc/audit/audit.rules
44
5-a always,exit -F path=/usr/sbin/init -F perm=x -F auid>=1000 -F auid!=unset -k privileged-init5-a always,exit -F path=/usr/sbin/init -F perm=x -F auid>=1000 -F auid!=unset -k privileged-init
66
t7If the command does not return a line, or the line is commented out, this is a finding.t7If the command does not return a line, or the line is commented out, then this is a finding.

CCE-84021-5 - package_firewalld_installed

Check

t1Run the following command to determine if the  firewalld  package is installed with the following command:t1Run the following command to determine if the  firewalld  package is installed:$ sudo dnf list --installed firewalld firewalld.noarch1.0.0-4.el9If the firewall package is not installed, this is a finding.
2 
3$ sudo dnf list --installed firewalld
4 
5firewalld.noarch                1.0.0-4.el9
6 
7If the firewall package is not installed, this is a finding.

CCE-89708-2 - set_password_hashing_min_rounds_logindefs

Check

n1Verify that RHEL 9 has a minimum number of hash rounds configured with the following command:n1Inspect "/etc/login.defs" and ensure that if eihter
2"SHA_CRYPT_MIN_ROUNDS" or "SHA_CRYPT_MAX_ROUNDS"
3are set, they must have the minimum value of "5000".
24
t3$ grep -i sha_crypt /etc/login.defst5If it does not, then this is a finding.
4 
5If only one of "SHA_CRYPT_MIN_ROUNDS" or "SHA_CRYPT_MAX_ROUNDS" is set, and this value is below "5000", this is a finding.
6 
7If both "SHA_CRYPT_MIN_ROUNDS" and "SHA_CRYPT_MAX_ROUNDS" are set, and the highest value for either is below "5000", this is a finding.

CCE-90085-2 - use_pam_wheel_for_su

Check

n1Verify that RHEL 9 requires uses to be members of the "wheel" group with the following command:n1Run the following command to check if the line is present:
2 grep pam_wheel /etc/pam.d/su
3The output should contain the following line:
4 auth             required        pam_wheel.so use_uid
25
t3$grep pam_wheel /etc/pam.d/sut6If the line is not in the file or it is commented, then this is a finding.
4 
5auth             required        pam_wheel.so use_uid
6 
7If a line for "pam_wheel.so" does not exist, or is commented out, this is a finding.

Fix

f1Configure RHEL 9 to require users to be in the "wheel" group to run "su" command.f1Configure RHEL 9 to require users to be in the "wheel" group to run "su" command.
22
3In file "/etc/pam.d/su", uncomment the following line:3In file "/etc/pam.d/su", uncomment the following line:
44
5"#auth    required    pam_wheel.so use_uid"5"#auth    required    pam_wheel.so use_uid"
66
7$ sed '/^[[:space:]]*#[[:space:]]*auth[[:space:]]\+required[[:space:]]\+pam_wheel\.so[[:space:]]\+use_uid$/s/^[[:space:]]*#//' -i /etc/pam.d/su7$ sed '/^[[:space:]]*#[[:space:]]*auth[[:space:]]\+required[[:space:]]\+pam_wheel\.so[[:space:]]\+use_uid$/s/^[[:space:]]*#//' -i /etc/pam.d/su
88
9If necessary, create a "wheel" group and add administrative users to the group.9If necessary, create a "wheel" group and add administrative users to the group.
t10 t

CCE-86240-9 - file_audit_tools_group_ownership

Vul_Discussion

f1Protecting 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.f1Protecting 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.
22
t3RHEL9 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.t3RHEL 9 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.
44
5Audit 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.5Audit 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.

CCE-83938-1 - file_groupowner_backup_etc_shadow

Check

n1Verify the group ownership of the "/etc/shadow-" file with the following command:n1To check the group ownership of /etc/shadow- ,
2run the command:
3 $ sudo stat -c "%G %n" /etc/shadow-
4If properly configured, the output should indicate the following group-owner:
5 root
26
t3$ sudo stat -c "%G %n" /etc/shadow-t
4 
5root /etc/shadow-
6 
7If "/etc/shadow-" file does not have a group owner of "root", this is a finding.7If /etc/shadow- does not have a group owner of root, then this is a finding.

Fix

f1Change the group of the file /etc/shadow- to root by running the following command:f1Change the group of the file /etc/shadow- to root by running the following command:
t2 t
3$ sudo chgrp root /etc/shadow-2$ sudo chgrp root /etc/shadow-

CCE-83961-3 - sysctl_kernel_core_pattern

Check

f1Verify RHEL 9 disables storing core dumps with the following commands:f1Verify RHEL 9 disables storing core dumps with the following commands:
22
t3$ sysctl kernel.core_patternt3$ sudo sysctl kernel.core_pattern
44
5kernel.core_pattern = |/bin/false5kernel.core_pattern = |/bin/false
66
7If the returned line does not have a value of "|/bin/false", or a line is not returned and the need for core dumps is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.7If the returned line does not have a value of "|/bin/false", or a line is not returned and the need for core dumps is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.
88
9Check that the configuration files are present to disable core dump storage.9Check that the configuration files are present to disable core dump storage.
1010
11$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F kernel.core_pattern | tail -111$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F kernel.core_pattern | tail -1
1212
13kernel.core_pattern = |/bin/false13kernel.core_pattern = |/bin/false
1414
15If "kernel.core_pattern" is not set to "|/bin/false" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, or is missing, this is a finding.15If "kernel.core_pattern" is not set to "|/bin/false" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, or is missing, this is a finding.

CCE-84206-2 - configure_usbguard_auditbackend

Requirement

t1RHEL 8 must enable Linux audit logging for the USBGuard daemon.t1RHEL 9 Must Provide Audit Record Generation Capability For Dod-Defined Auditable Events For All Operating System Components.

Vul_Discussion

t1Without 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.t1Using the Linux Audit logging allows for centralized trace
2 2of events.
3If 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.
4 
5Audit records can be generated from various components within the information system (e.g., module or policy filter).
6 
7The 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.
8 
9DoD has defined the list of events for which RHEL 9 will provide an audit record generation capability as the following:
10 
111) Successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels);
12 
132) Access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system;
14 
153) All account creations, modifications, disabling, and terminations; and
16 
174) All kernel module load, unload, and restart actions.

Check

n1To verify that Linux Audit logging is enabled for the USBGuard daemon with the following command:n1To verify that Linux Audit logging is enabled for the USBGuard daemon,
2run the following command:
3 $ sudo grep AuditBackend
4The output should be
5 AuditBackend=LinuxAudit
26
t3$ sudo grep AuditBackend /etc/usbguard/usbguard-daemon.conft
4 
5AuditBackend=LinuxAudit
6 
7If "AuditBackend" is not set to "LinuxAudit", this is a finding.7If AuditBackend is not set to LinuxAudit, then this is a finding.

CCE-83998-5 - sysctl_net_ipv4_ip_forward

Check

f1Verify RHEL 9 is not performing IPv4 packet forwarding, unless the system is a router.f1Verify RHEL 9 is not performing IPv4 packet forwarding, unless the system is a router.
22
3Check that IPv4 forwarding is disabled using the following command:3Check that IPv4 forwarding is disabled using the following command:
44
n5$ sysctl net.ipv4.conf.all.forwardingn5$ sudo sysctl net.ipv4.ip_forward
66
t7net.ipv4.conf.all.forwarding = 0t7net.ipv4.ip_forward = 0
88
9If the IPv4 forwarding value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.9If the IPv4 forwarding value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.
1010
11Check that the configuration files are present to enable this network parameter.11Check that the configuration files are present to enable this network parameter.
1212
13$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.conf.all.forwarding | tail -113$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.conf.all.forwarding | tail -1
1414
15net.ipv4.conf.all.forwarding = 015net.ipv4.conf.all.forwarding = 0
1616
17If "net.ipv4.conf.all.forwarding" is not set to "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, or is missing, this is a finding.17If "net.ipv4.conf.all.forwarding" is not set to "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, or is missing, this is a finding.

Fix

f1Configure RHEL 9 to not allow IPv4 packet forwarding, unless the system is a router.f1Configure RHEL 9 to not allow IPv4 packet forwarding, unless the system is a router.
22
3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:
44
t5net.ipv4.conf.all.forwarding = 0t5net.ipv4.conf.all.forwarding=0
66
7Load settings from all system configuration files with the following command:7Load settings from all system configuration files with the following command:
88
9$ sudo sysctl --system9$ sudo sysctl --system

CCE-83940-7 - file_permissions_backup_etc_passwd

Requirement

t1The RHEL 9 /etc/passwd- file must have mode 0644 or less permissive to prevent unauthorized access.t1The RHEL 9 /etc/passwd- file must have 0644 or less permissive to prevent unauthorized access.

Check

n1Verify that the "/etc/passwd-" file has mode "0644" or less permissive with the following command:n1To check the permissions of /etc/passwd- ,
2run the command:
3 $ sudo stat -c "%a %n" /etc/passwd-
4If properly configured, the output should indicate the following permissions:
5 644 /etc/passwd-
26
t3$ sudo stat -c "%a %n" /etc/passwd-t7If /etc/passwd- does not have unix mode 644, then this is a finding.
4 
5644 /etc/passwd-
6 
7If a value of "0644" or less permissive is not returned, this is a finding.

Fix

t1Change the mode of the file "/etc/passwd-" to "0644" by running the following command:t1Change the permissions of the file "/etc/passwd-" to "0644" by running the following command:
2 
3$ sudo chmod 0644 /etc/passwd-2$ sudo chmod 0644 /etc/passwd-

CCE-83995-1 - rsyslog_nolisten

Requirement

t1 RHEL 9 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.t1RHEL 9 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.

CCE-84232-8 - service_kdump_disabled

Check

n1Verify that the kdump service is disabled in system boot configuration with the following command:n1To check that the  kdump  service is disabled in system boot configuration,
2run the following command:
3 $ sudo systemctl is-enabled  kdump
4Output should indicate the  kdump  service has either not been installed,
5or has been disabled at all runlevels, as shown in the example below:
6 $ sudo systemctl is-enabled  kdump
7 disabled
28
n3$ systemctl is-enabled  kdumpn9Run the following command to verify  kdump  is not active (i.e. not running) through current runtime configuration:
10 $ sudo systemctl is-active kdump
411
n5disabledn12If the service is not running the command will return the following output:
13 inactive
614
n7Verify that the kdump service is not active (i.e. not running) through current runtime configuration with the following command:n15The service will also be masked, to check that the  kdump  is masked, run the following command:
16 $ sudo systemctl show  kdump  | grep "LoadState\|UnitFileState"
817
n9$ systemctl is-active kdumpn18If the service is masked the command will return the following outputs:
1019
n11inactiven20 LoadState=masked
12Verify that the kdump service is masked with the following command:
1321
n14$ sudo systemctl show  kdump  | grep "LoadState\|UnitFileState"n22 UnitFileState=masked
1523
t16LoadState=maskedt
17 
18UnitFileState=masked
19 
20If the "kdump" service is loaded or active, and is not masked, this is a finding.24If the "kdump" is loaded and not masked, then this is a finding.

Fix

n1Disable and mask the kdump service on RHEL 9.n1Disable the kdump RHEL 9 service.
22
3To disable the kdump service run the following command:3To disable the kdump service run the following command:
44
5$ sudo systemctl disable --now kdump5$ sudo systemctl disable --now kdump
66
t7To mask the kdump service run the following command:t
8 
9$ sudo systemctl mask --now kdump7$ sudo systemctl mask --now kdump

CCE-88570-7 - audit_rules_dac_modification_umount2

Check

f1To determine if the system is configured to audit calls to thef1To determine if the system is configured to audit calls to the
2 umount2 system call, run the following command:2 umount2 system call, run the following command:
3 $ sudo grep "umount2" /etc/audit/audit.*3 $ sudo grep "umount2" /etc/audit/audit.*
4If the system is configured to audit this activity, it will return a line.4If the system is configured to audit this activity, it will return a line.
55
66
t7If no line is returned, this is a finding.t7If no line is returned, then this is a finding.

CCE-88048-4 - accounts_authorized_local_users

Requirement

t1RHEL 9 must not have unauthorized interactive accounts.t1RHEL 9 Must Be Configured In Accordance With The Security Configuration Settings Based On Dod Security Configuration Or Implementation Guidance, Including Stigs, Nsa Configuration Guides, Ctos, And Dtms.

Check

n1Verify that there are no unauthorized local interactive user accounts with the following command:n1To verify that there are no unauthorized local user accounts, run the following command:
2 $ less /etc/passwd
3Inspect the results, and if unauthorized local user accounts exist, remove them by running
4the following command:
5 $ sudo userdel  unauthorized_user
26
t3$ less /etc/passwdt
4 
5root:x:0:0:root:/root:/bin/bash
6...
7smithk:x:1000:1000:smithk:/home/smithk:/bin/bash
8throckw:x:1001:1001:throckw:/home/throckw:/bin/bash
9 
10Interactive user account, generally will have a UID of 1000 or greater, a home directory in a specific partition, and an interactive shell.
11 
12Obtain the list of interactive user accounts authorized to be on the system from the System Administrator or Information System Security Officer (ISSO) and compare it to the list of local interactive user accounts on the system.
13 
14If there are unauthorized local user accounts on the system, this is a finding.7If there are unauthorized local user accounts on the system, then this is a finding.

Fix

n1Remove unauthorized local interactive user accounts with the following command where <unauthorized_user> is the unauthorized account:n
21
t3$ sudo userdel  <unauthorized_user>t

CCE-83575-1 - accounts_password_pam_maxclassrepeat

Check

f1Verify the value of the "maxclassrepeat" option in "/etc/security/pwquality.conf" with the following command:f1Verify the value of the "maxclassrepeat" option in "/etc/security/pwquality.conf" with the following command:
22
3$ grep maxclassrepeat /etc/security/pwquality.conf3$ grep maxclassrepeat /etc/security/pwquality.conf
44
5maxclassrepeat = 45maxclassrepeat = 4
66
t7If the value of "maxclassrepeat" is set to "0", more than "4" or is commented out, this is a finding.t7If the value of "maxclassrepeat" is set to "0", more than "4" or is commented out, then this is a finding.

CCE-88493-2 - account_unique_id

Check

t1Verify that RHEL 9 contains no duplicate User IDs (UIDs) for interactive users with the following command:t1Verify that RHEL 9 contains no duplicate User IDs (UIDs) for interactive users.
2 
3Check that the operating system contains no duplicate UIDs for interactive users with the following command:
24
3$ sudo awk -F ":" 'list[$3]++{print $1, $3}' /etc/passwd5$ sudo awk -F ":" 'list[$3]++{print $1, $3}' /etc/passwd
46
5If output is produced and the accounts listed are interactive user accounts, this is a finding.7If output is produced and the accounts listed are interactive user accounts, this is a finding.

CCE-83504-1 - package_rng-tools_installed

Check

f1Verify that RHEL 9 has the rng-tools package installed with the following command:f1Verify that RHEL 9 has the rng-tools package installed with the following command:
22
t3$ sudo dnf list --installed rng-toolst3$ dnf list --installed rng-tools
44
5rng-tools.x86_64        6.14-2.git.b2b7934e.el95rng-tools.x86_64        6.14-2.git.b2b7934e.el9
66
7If a rng-tools package is not installed, this is a finding.7If a rng-tools package is not installed, this is a finding.

CCE-85967-8 - disallow_bypass_password_sudo

Check

n1Verify the operating system is not configured to bypass password requirements for privilege escalation with the following command:n1Verify the operating system is not configured to bypass password requirements for privilege
2escalation. Check the configuration of the "/etc/pam.d/sudo" file with the following command:
3 $ sudo grep pam_succeed_if /etc/pam.d/sudo
24
t3$ sudo grep pam_succeed_if /etc/pam.d/sudot5If system is configured to bypass password requirements for privilege escalation, then this is a finding.
4 
5If any occurances of "pam_succeed_if" are returned, this is a finding.

Fix

f1Configure the operating system to require users to supply a password for privilege escalation.f1Configure the operating system to require users to supply a password for privilege escalation.
22
tt3Check the configuration of the "/etc/pam.d/sudo" file with the following command:
4$ sudo vi /etc/pam.d/sudo
5 
3Remove any occurrences of " pam_succeed_if " in the  "/etc/pam.d/sudo" file.6Remove any occurrences of " pam_succeed_if " in the file.

CCE-83722-9 - audit_rules_usergroup_modification_group

Requirement

t1 RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/group.t1RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/group.

CCE-83954-8 - sysctl_kernel_kexec_load_disabled

Check

f1Verify RHEL 9 is configured to disable kernel image loading.f1Verify RHEL 9 is configured to disable kernel image loading.
22
3Check the status of the kernel.kexec_load_disabled kernel parameter with the following command:3Check the status of the kernel.kexec_load_disabled kernel parameter with the following command:
44
n5$ sysctl kernel.kexec_load_disabledn5$ sudo sysctl kernel.kexec_load_disabled
66
7kernel.kexec_load_disabled = 17kernel.kexec_load_disabled = 1
88
9If "kernel.kexec_load_disabled" is not set to "1" or is missing, this is a finding.9If "kernel.kexec_load_disabled" is not set to "1" or is missing, this is a finding.
1010
11Check that the configuration files are present to enable this kernel parameter with the following command:11Check that the configuration files are present to enable this kernel parameter with the following command:
1212
13$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F kernel.kexec_load_disabled | tail -113$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F kernel.kexec_load_disabled | tail -1
1414
15kernel.kexec_load_disabled = 115kernel.kexec_load_disabled = 1
1616
t17If "kernel.kexec_load_disabled" is not set to "1" or is missing, this is a finding.t17If "kernel.kexec_load_disablede" is not set to "1" or is missing, this is a finding.

CCE-90560-4 - account_emergency_expire_date

Vul_Discussion

f1If emergency user accounts remain active when no longer needed or forf1If emergency user accounts remain active when no longer needed or for
2an excessive period, these accounts may be used to gain unauthorized access.2an excessive period, these accounts may be used to gain unauthorized access.
3To mitigate this risk, automated termination of all emergency accounts3To mitigate this risk, automated termination of all emergency accounts
4must be set upon account creation.4must be set upon account creation.
t5 t
6 

CCE-83445-7 - configure_ssh_crypto_policy

Fix

t1 Configure the RHEL 9 SSH daemon to use system-wide crypto policies by commenting or removing the 'CRYPTO_POLICY=' line in /etc/sysconfig/sshd:t1Configure the RHEL 9 SSH daemon to use system-wide crypto policies by commenting or removing the 'CRYPTO_POLICY=' line in /etc/sysconfig/sshd:
22
3# CRYPTO_POLICY=3# CRYPTO_POLICY=
44
5A reboot is required for the changes to take effect.5A reboot is required for the changes to take effect.

CCE-83941-5 - file_permissions_etc_shadow

Requirement

t1The RHEL 9 /etc/shadow file must have mode 0000 to prevent unauthorized access.t1The RHEL 9 /etc/shadow file must have 0000 to prevent unauthorized access.

Check

n1Verify that the "/etc/shadow" file has mode "0000" with the following command:n1To check the permissions of /etc/shadow ,
2run the command:
3 $ sudo stat -c "%a %n" /etc/shadow
4If properly configured, the output should indicate the following permissions:
5000
26
t3$ sudo stat -c "%a %n" /etc/shadowt7If /etc/shadow does not have unix mode 000, then this is a finding.
4 
50 /etc/shadow
6 
7If a value of "0" is not returned, this is a finding.

Fix

t1Change the mode of the file "/etc/shadow" to "0000" by running the following command:t1Change the permissions of the file "/etc/shadow" to "0000" by running the following command:
2 
3$ sudo chmod 0000 /etc/shadow2$ sudo chmod 0000 /etc/shadow

CCE-83950-6 - file_groupowner_etc_passwd

Check

n1Verify the group ownership of the "/etc/passwd" file with the following command:n1To check the group ownership of /etc/passwd ,
2run the command:
3 $ sudo stat -c "%G %n" /etc/passwd
4If properly configured, the output should indicate the following group-owner:
5 root /etc/passwd
26
t3$ sudo stat -c "%G %n" /etc/passwdt
4 
5root /etc/passwd
6 
7If "/etc/passwd" file does not have a group owner of "root", this is a finding.7If /etc/passwd does not have a group owner of root, then this is a finding.

Fix

f1Change the group of the file /etc/passwd to root by running the following command:f1Change the group of the file /etc/passwd to root by running the following command:
t2 t
3$ sudo chgrp root /etc/passwd2$ sudo chgrp root /etc/passwd

CCE-86080-9 - account_passwords_pam_faillock_dir

Check

n1Verify the "/etc/security/faillock.conf" file is configured use a non-default faillock directory to ensure contents persist after reboot with the following command:n1Verify the "/etc/security/faillock.conf" file is configured use a non-default faillock directory to ensure contents persist after reboot:
22
n3$ grep 'dir =' /etc/security/faillock.confn3$ sudo grep 'dir =' /etc/security/faillock.conf
44
5dir = /var/log/faillock5dir = /var/log/faillock
66
t7If the "dir" option is not set to a non-default documented tally log directory, is missing or commented out, this is a finding.t7If the "dir" option is not set to a non-default documented tally log directory, is missing or commented out, then this is a finding.

CCE-83921-7 - file_permissions_etc_gshadow

Requirement

t1The RHEL 9 /etc/gshadow file must have mode 0000 or less permissive to prevent unauthorized access.t1The RHEL 9 /etc/gshadow file must have 0000 or less permissive to prevent unauthorized access.

Check

n1Verify that the "/etc/gshadow" file has mode "0000" with the following command:n1To check the permissions of /etc/gshadow ,
2run the command:
3 $ sudo stat -c "%a %n" /etc/gshadow
4If properly configured, the output should indicate the following permissions:
5 ----------
26
t3$ sudo stat -c "%a %n" /etc/gshadowt7If /etc/gshadow does not have unix mode 000, then this is a finding.
4 
50 /etc/gshadow
6 
7If a value of "0" is not returned, this is a finding.

Fix

t1Change the mode of the file "/etc/gshadow" to "0000" by running the following command:t1Change the permissions of the file "/etc/gshadow" to "0000" by running the following command:
2 
3$ sudo chmod 0000 /etc/gshadow2$ sudo chmod 0000 /etc/gshadow

CCE-85878-7 - accounts_password_pam_pwquality_password_auth

Check

n1Verify RHEL 9 uses "pwquality" to enforce the password complexity rules in the password-auth file with the following command:n1To check if pam_pwhistory.so is enabled in password-auth, run the following command:
2 $ grep pam_pwquality /etc/pam.d/password-auth
3The output should be similar to the following:
4 password requisite pam_pwquality.so
25
t3$ cat /etc/pam.d/password-auth | grep pam_pwqualityt6If pam_pwquality.so is not enabled in password-auth, then this is a finding.
4 
5password required pam_pwquality.so
6 
7If the command does not return a line containing the value "pam_pwquality.so", or the line is commented out, this is a finding.

CCE-86108-8 - account_passwords_pam_faillock_audit

Check

n1Verify the "/etc/security/faillock.conf" file is configured to log user name information when unsuccessful logon attempts occur with the following command:n1Verify the "/etc/security/faillock.conf" file is configured to log user name information when unsuccessful logon attempts occur:
22
n3$ grep audit /etc/security/faillock.confn3$ sudo grep audit /etc/security/faillock.conf
44
5audit5audit
66
t7If the "audit" option is not set, is missing, or is commented out, this is a finding.t7If the "audit" option is not set, is missing or commented out, then this is a finding.

CCE-83652-8 - grub2_audit_backlog_limit_argument

Check

f1Verify RHEL 9 allocates a sufficient audit_backlog_limit to capture processes that start prior to the audit daemon with the following commands:f1Verify RHEL 9 allocates a sufficient audit_backlog_limit to capture processes that start prior to the audit daemon with the following commands:
22
3First check if the GRUB recovery is enabled:3First check if the GRUB recovery is enabled:
44
5$ sudo grep 'GRUB_DISABLE_RECOVERY' /etc/default/grub5$ sudo grep 'GRUB_DISABLE_RECOVERY' /etc/default/grub
66
7GRUB_DISABLE_RECOVERY="true"7GRUB_DISABLE_RECOVERY="true"
88
9If this option is set to true, then check that a line is output by the following command:9If this option is set to true, then check that a line is output by the following command:
1010
11$ sudo grep 'GRUB_CMDLINE_LINUX_DEFAULT.*audit_backlog_limit=8192.*' /etc/default/grub11$ sudo grep 'GRUB_CMDLINE_LINUX_DEFAULT.*audit_backlog_limit=8192.*' /etc/default/grub
1212
13If the option is set to false, then check that a line is output by the following command:13If the option is set to false, then check that a line is output by the following command:
1414
15$ sudo grep 'GRUB_CMDLINE_LINUX.*audit_backlog_limit=8192.*' /etc/default/grub15$ sudo grep 'GRUB_CMDLINE_LINUX.*audit_backlog_limit=8192.*' /etc/default/grub
1616
17If 'audit_backlog_limit' is not set to '8192' or greater, or the option is missing, this is a finding.17If 'audit_backlog_limit' is not set to '8192' or greater, or the option is missing, this is a finding.
1818
19Additionally command line parameters for currently installed kernels must be checked as well with the following command:19Additionally command line parameters for currently installed kernels must be checked as well with the following command:
2020
21 $ sudo grubby --info=ALL | grep args | grep -v 'audit_backlog_limit=8192'21 $ sudo grubby --info=ALL | grep args | grep -v 'audit_backlog_limit=8192'
2222
t23If the command return any outputs and audit_backlog_limit is less than "8192", this is a finding.t23If the command return any outputs and audit_backlog_limit is less than 8182, this is a finding.

CCE-84217-9 - service_chronyd_enabled

Requirement

t1The RHEL 9 chronyd service must be enabled.t1The RHEL 9 service chronyd must be enabled.

Vul_Discussion

t1Inaccurate 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.t1If chrony is in use on the system proper configuration is vital to ensuring time
2 2synchronization is working properly.
3Synchronizing internal information system clocks provides uniformity of time stamps for information systems with multiple system clocks and systems connected over a network.

Check

n1Verify the chronyd service is active with the following command:n1Run the following command to determine the current status of the
2 chronyd service:
3 $ sudo systemctl is-active chronyd
4If the service is running, it should return the following: active
25
t3$ systemctl is-active chronydt
4 
5active
6 
7If the chronyd service is not active, this is a finding.6If the chronyd process is not running, then this is a finding.

CCE-83849-0 - grub2_password

Check

n1Verify the boot loader superuser password has been set, run the followingn1To verify the boot loader superuser password has been set, run the following
2command:2command:
33
n4$sudo grep "superusers" /etc/grub2.cfgn4 sudo grep "superusers" /etc/grub2.cfg
55
nn6The output should show the following:
6password_pbkdf2  superusers-account   ${GRUB2_PASSWORD}7 password_pbkdf2  superusers-account   ${GRUB2_PASSWORD}
7 
8To verify the boot loader superuser account password has been set,8To verify the boot loader superuser account password has been set,
9and the password encrypted, run the following command:9and the password encrypted, run the following command:
1010
n11$ sudo cat /boot/grub2/user.cfgn11 sudo cat /boot/grub2/user.cfg
12 12The output should be similar to:
13GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.C4E08AC72FBFF7E837FD267BFAD7AEB3D42DDC13 GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.C4E08AC72FBFF7E837FD267BFAD7AEB3D42DDC
142C99F2A94DD5E2E75C2DC331B719FE55D9411745F82D1B6CFD9E927D61925F9BBDD1CFAA0080E0142C99F2A94DD5E2E75C2DC331B719FE55D9411745F82D1B6CFD9E927D61925F9BBDD1CFAA0080E0
15916F7AB46E0D.1302284FCCC52CD73BA3671C6C12C26FF50BA873293B24EE2A96EE3B57963E6D715916F7AB46E0D.1302284FCCC52CD73BA3671C6C12C26FF50BA873293B24EE2A96EE3B57963E6D7
160C83964B473EC8F93B07FE749AA6710269E904A9B08A6BBACB00A2D242AD828160C83964B473EC8F93B07FE749AA6710269E904A9B08A6BBACB00A2D242AD828
1717
t18If a "GRUB2_PASSWORD" is not set, this is a finding.t18If it does not, this is a finding.

Fix

n1Configure RHEL 9 to require a grub bootloader password for the grub superuser account.n1Configure RHEL 9 to require a grub bootloader password    for the grub superuser account.
22
n3Generate an encrypted grub2 password for the grub superuser account with the following command:n3Generate an encrypted grub2 password for the grub superuser account with the following    command:
44
5$ sudo grub2-setpassword5$ sudo grub2-setpassword
6Enter password:6Enter password:
7Confirm password:7Confirm password:
88
nn9Edit the /etc/grub.d/40_custom file and add or modify the following lines in the    "### BEGIN /etc/grub.d/01_users ###" section:
910
tt11set superusers="[someuniquestringhere]"
12export superusers

CCE-83830-0 - audit_rules_dac_modification_chmod

Requirement

t1 RHEL 9 must audit all uses of the chmod, fchmod, and fchmodat syscalls.t1RHEL 9 must audit all uses of the chmod, fchmod, and fchmodat syscalls.

CCE-84134-6 - kernel_module_can_disabled

Requirement

t1RHEL 9 must be configured to disable the Controller Area Network kernel module.t1RHEL 9 Must Be Configured To Disable Non-Essential Capabilities.

Vul_Discussion

t1Disabling Controller Area Network (CAN) protects the system against exploitation of any flaws in its implementation.t1Disabling Controller Area Network (CAN) protects the system against exploitation of any
2flaws in its implementation.

Check

n1Verify that RHEL 9 disables the ability to load the CAN kernel module with the following command:n
21
nn2If the system is configured to prevent the loading of the  can  kernel module,
3it will contain lines inside any file in  /etc/modprobe.d  or the deprecated /etc/modprobe.conf .
4These lines instruct the module loading system to run another program (such as  /bin/true ) upon a module  install  event.
5Run the following command to search for such lines in all files in  /etc/modprobe.d  and the deprecated  /etc/modprobe.conf :
3$ sudo grep -r can /etc/modprobe.conf /etc/modprobe.d/*6 $ grep -r can /etc/modprobe.conf /etc/modprobe.d
47
t5blacklist cant8If no line is returned, then this is a finding.
6 
7If the command does not return any output, or the line is commented out, and use of CAN is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.

CCE-83449-9 - configure_kerberos_crypto_policy

Check

n1Verify that the symlink exists and targets the correct Kerberos crypto policy, with the following command:n1Check that the symlink exists and target the correct Kerberos crypto policy, with the following command:
2 
3file /etc/crypto-policies/back-ends/krb5.config2file /etc/crypto-policies/back-ends/krb5.config
43
5If command ouput shows the following line, Kerberos is configured to use the system-wide crypto policy.4If command ouput shows the following line, Kerberos is configured to use the system-wide crypto policy.
6/etc/crypto-policies/back-ends/krb5.config: symbolic link to /usr/share/crypto-policies/FIPS/krb5.txt5/etc/crypto-policies/back-ends/krb5.config: symbolic link to /usr/share/crypto-policies/FIPS/krb5.txt
76
t8If the symlink does not exist or points to a different target, this is a finding.t7If the symlink does not exist or points to a different target, then this is a finding.

CCE-86923-0 - sshd_set_loglevel_verbose

Check

f1Verify RHEL 9 logs SSH connection attempts and failures to the server.f1Verify RHEL 9 logs SSH connection attempts and failures to the server.
22
3Check what the SSH daemon's "LogLevel" option is set to with the following command:3Check what the SSH daemon's "LogLevel" option is set to with the following command:
44
5$ sudo grep -i LogLevel /etc/ssh/sshd_config5$ sudo grep -i LogLevel /etc/ssh/sshd_config
66
t7LogLevel VERBOSEt
8 
9If a value of "VERBOSE" is not returned, the line is commented out, or is missing, this is a finding.7If a value of "VERBOSE" is not returned, the line is commented out, or is missing, this is a finding.

CCE-83850-8 - service_autofs_disabled

Check

f1Verify that RHEL 9 file system automounter has been disabled with the following command:f1Verify that RHEL 9 file system automounter has been disabled with the following command:
22
3$ sudo systemctl is-enabled  autofs3$ sudo systemctl is-enabled  autofs
44
5masked5masked
66
t7If the returned value is not "masked", "disabled", "Failed to get unit file state for autofs.service for autofs", or "enabled" is returned and is not documented as operational requirement with the Information System Security Officer ISSO, this is a finding.t7If the returned value is not "masked", "disabled", "Failed to get unit file state for autofs.service for autofs", or "enabled" is returned and is not documented as operational requirement with the Information System Security Officer ISSO.

CCE-83929-0 - file_owner_backup_etc_gshadow

Requirement

t1The RHEL 9 /etc/gshadow- file must be owned by root.t1The RHEL 9 /etc/gshadow- file must be group-owned by root.

Check

n1Verify the ownership of the "/etc/gshadow-" file with the following command:n1To check the ownership of /etc/gshadow- ,
2run the command:
3 $ sudo stat -c "%U %n" /etc/gshadow-
4If properly configured, the output should indicate the following owner:
5 root
26
t3$ sudo stat -c "%U %n" /etc/gshadow-t
4 
5root /etc/gshadow-
6 
7If "/etc/gshadow-" file does not have an owner of "root", this is a finding.7If /etc/gshadow- does not have an owner of root, then this is a finding.

Fix

t1Change the owner of the file /etc/gshadow- to root by running the following command:t1Change the group of the file /etc/gshadow- to root by running the following command:
2 
3$ sudo chown root /etc/gshadow-2$ sudo chgrp root /etc/gshadow-

CCE-89175-4 - firewalld_sshd_port_enabled

Check

t1 Inspect the firewall configuration and running services to verify it is configured to prohibit or restrict the use of functions, ports, protocols, and/or services that are unnecessary or prohibited.t1Inspect the firewall configuration and running services to verify it is configured to prohibit or restrict the use of functions, ports, protocols, and/or services that are unnecessary or prohibited.
22
3Check which services are currently active with the following command:3Check which services are currently active with the following command:
44
5$ sudo firewall-cmd --list-all-zones5$ sudo firewall-cmd --list-all-zones
66
7custom (active)7custom (active)
8target: DROP8target: DROP
9icmp-block-inversion: no9icmp-block-inversion: no
10interfaces: ens3310interfaces: ens33
11sources:11sources:
12services: dhcpv6-client dns http https ldaps rpc-bind ssh12services: dhcpv6-client dns http https ldaps rpc-bind ssh
13ports:13ports:
14masquerade: no14masquerade: no
15forward-ports:15forward-ports:
16icmp-blocks:16icmp-blocks:
17rich rules:17rich rules:
1818
19Ask 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.19Ask 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.
2020
21If 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), this is a finding.21If 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), this is a finding.

CCE-86043-7 - group_unique_id

Check

t1Verify that RHEL 9 contains no duplicate Group IDs (GID) for interactive users with the following command:t1Verify that RHEL 9 contains no duplicate Group IDs (GID) for interactive users.
2 
3Check that the operating system contains no duplicate group names for interactive users by running the following command:
24
3 $  cut -d : -f 3 /etc/group | uniq -d5 $  cut -d : -f 3 /etc/group | uniq -d
46
5If the system has duplicate group ids, this is a finding.7If the system has duplicate group ids, this is a finding.

CCE-87370-3 - grub2_admin_username

Check

n1Verify the boot loader superuser account has been set with the following command:n1To verify the boot loader superuser account has been set, run the following
2 2command:
3$ sudo grep -A1 "superusers" /etc/grub2.cfg3 sudo grep -A1 "superusers" /etc/grub2.cfg
4 4The output should show the following:
5 set superusers="<superusers-account>"5 set superusers=" superusers-account "
6export superusers6export superusers
n7 n
8The <superusers-account> is the actual account name different from common names like root,7where superusers-account is the actual account name different from common names like root,
9admin, or administrator.8admin, or administrator.
109
t11If superusers contains easily guessable usernames, this is a finding.t10If superusers contains easily guessable username, this is a finding.

CCE-84113-0 - sysctl_net_ipv6_conf_default_accept_redirects

Check

f1Verify RHEL 9 will not accept IPv6 ICMP redirect messages.f1Verify RHEL 9 will not accept IPv6 ICMP redirect messages.
22
3Note: If IPv6 is disabled on the system, this requirement is Not Applicable.3Note: If IPv6 is disabled on the system, this requirement is Not Applicable.
44
5Check the value of the default "accept_redirects" variables with the following command:5Check the value of the default "accept_redirects" variables with the following command:
66
t7$ sysctl net.ipv6.conf.default.accept_redirectst7$ sudo sysctl net.ipv6.conf.default.accept_redirects
88
9net.ipv6.conf.default.accept_redirects = 09net.ipv6.conf.default.accept_redirects = 0
1010
11If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.11If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.
1212
13Check that the configuration files are present to enable this network parameter.13Check that the configuration files are present to enable this network parameter.
1414
15$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv6.conf.default.accept_redirects | tail -115$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv6.conf.default.accept_redirects | tail -1
1616
17net.ipv6.conf.default.accept_redirects = 017net.ipv6.conf.default.accept_redirects = 0
1818
19If "net.ipv6.conf.default.accept_redirects" is not set to "0" or is missing, this is a finding.19If "net.ipv6.conf.default.accept_redirects" is not set to "0" or is missing, this is a finding.

CCE-84227-8 - service_fapolicyd_enabled

Check

f1Verify that RHEL 9 fapolicyd is active with the following command:f1Verify that RHEL 9 fapolicyd is active with the following command:
22
3$ systemctl is-active fapolicyd3$ systemctl is-active fapolicyd
44
5active5active
66
t7If fapolicyd module is not active, this is a finding.t7If fapolicyd is not active, this is a finding.

CCE-84125-4 - sysctl_net_ipv6_conf_all_accept_redirects

Check

f1Verify RHEL 9 ignores IPv6 ICMP redirect messages.f1Verify RHEL 9 ignores IPv6 ICMP redirect messages.
22
3Note: If IPv6 is disabled on the system, this requirement is Not Applicable.3Note: If IPv6 is disabled on the system, this requirement is Not Applicable.
44
5Check the value of the "accept_redirects" variables with the following command:5Check the value of the "accept_redirects" variables with the following command:
66
t7$ sysctl net.ipv6.conf.all.accept_redirectst7$ sudo sysctl net.ipv6.conf.all.accept_redirects
88
9net.ipv6.conf.all.accept_redirects = 09net.ipv6.conf.all.accept_redirects = 0
1010
11If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.11If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.
1212
13Check that the configuration files are present to enable this network parameter.13Check that the configuration files are present to enable this network parameter.
1414
15$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv6.conf.all.accept_redirects | tail -115$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv6.conf.all.accept_redirects | tail -1
1616
17net.ipv6.conf.all.accept_redirects = 017net.ipv6.conf.all.accept_redirects = 0
1818
19If "net.ipv6.conf.all.accept_redirects" is not set to "0" or is missing, this is a finding.19If "net.ipv6.conf.all.accept_redirects" is not set to "0" or is missing, this is a finding.

CCE-83595-9 - package_opensc_installed

Check

t1Verify that RHEL 9 has the opensc package installed with the following command:t1Verify that RHEL 9 has the opensc package installed with the following command:$ sudo dnf list --installed openscopensc.x86_64  0.22.0-2.el9If the opensc package is not installed, this is a finding.
2 
3$ sudo dnf list --installed opensc
4 
5opensc.x86_64     0.22.0-2.el9
6 
7If the opensc package is not installed, this is a finding.

Fix

t1The  opensc  package can be installed with the following command:t1The opensc package can be installed with the following command:
22
3$ sudo dnf install opensc3$ sudo dnf install opensc

CCE-83947-2 - file_owner_backup_etc_passwd

Requirement

t1The RHEL 9 /etc/passwd- file must be owned by root.t1The RHEL 9 /etc/passwd- file must be group-owned by root.

Check

n1Verify the ownership of the "/etc/passwd-" file with the following command:n1To check the ownership of /etc/passwd- ,
2run the command:
3 $ sudo stat -c "%U %n" /etc/passwd-
4If properly configured, the output should indicate the following owner:
5 root
26
t3$ sudo stat -c "%U %n" /etc/passwd-t
4 
5root /etc/passwd-
6 
7If "/etc/passwd-" file does not have an owner of "root", this is a finding.7If /etc/passwd- does not have an owner of root, then this is a finding.

Fix

t1Change the owner of the file /etc/passwd- to root by running the following command:t1Change the group of the file /etc/passwd- to root by running the following command:
2 
3$ sudo chown root /etc/passwd-2$ sudo chgrp root /etc/passwd-

CCE-84008-2 - sysctl_net_ipv4_conf_all_rp_filter

Check

f1Verify RHEL 9 uses reverse path filtering on all IPv4 interfaces with the following commands:f1Verify RHEL 9 uses reverse path filtering on all IPv4 interfaces with the following commands:
22
t3$ sysctl net.ipv4.conf.all.rp_filtert3$ sudo sysctl net.ipv4.conf.all.rp_filter
44
5net.ipv4.conf.all.rp_filter = 15net.ipv4.conf.all.rp_filter = 1
66
7If the returned line does not have a value of "1", or a line is not returned, this is a finding.7If the returned line does not have a value of "1", or a line is not returned, this is a finding.
88
9Check that the configuration files are present to enable this network parameter.9Check that the configuration files are present to enable this network parameter.
1010
11$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.conf.all.rp_filter | tail -111$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.conf.all.rp_filter | tail -1
1212
13net.ipv4.conf.all.rp_filter = 113net.ipv4.conf.all.rp_filter = 1
1414
15If "net.ipv4.conf.all.rp_filter" is not set to "1" or is missing, this is a finding.15If "net.ipv4.conf.all.rp_filter" is not set to "1" or is missing, this is a finding.

CCE-84183-3 - file_permissions_cron_d

Check

n1Verify the permissions of the cron directories with the following command:n1To check the permissions of the cron directories,
2 2run the command:
3$ find /etc/cron* -type d | xargs stat -c "%a %n"3 $ find /etc/cron* -type d | xargs stat -c "%a %n"
4If properly configured, the output should indicate the following permissions:
45
5700 /etc/cron.d6700 /etc/cron.d
6700 /etc/cron.daily7700 /etc/cron.daily
7700 /etc/cron.hourly8700 /etc/cron.hourly
8700 /etc/cron.monthly9700 /etc/cron.monthly
9700 /etc/cron.weekly10700 /etc/cron.weekly
1011
tt12 
11If any cron configuration directory is more permissive than 700, this is a finding.13If any cron configuration directory is more permissive than 700, then this is a finding.

CCE-83639-5 - accounts_user_interactive_home_directory_exists

Check

f1Verify the assigned home directories of all interactive users on the system exist with the following command:f1Verify the assigned home directories of all interactive users on the system exist with the following command:
22
3$ sudo pwck -r3$ sudo pwck -r
44
5user 'mailnull': directory 'var/spool/mqueue' does not exist5user 'mailnull': directory 'var/spool/mqueue' does not exist
66
7The output should not return any interactive users.7The output should not return any interactive users.
88
t9If users home directory does not exist, this is a finding.t9If users home directory does not exist, then this is a finding.

CCE-86263-1 - file_audit_tools_ownership

Vul_Discussion

f1Protecting 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.f1Protecting 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.
22
t3RHEL9 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.t3RHEL 9 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.
44
5Audit 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.5Audit 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.

CCE-83942-3 - file_permissions_backup_etc_gshadow

Requirement

t1The RHEL 9 /etc/gshadow- file must have mode 0000 or less permissive to prevent unauthorized access.t1The RHEL 9 /etc/gshadow- file must have 0000 or less permissive to prevent unauthorized access.

Check

n1Verify that the "/etc/gshadow-" file has mode "0000" with the following command:n1To check the permissions of /etc/gshadow- ,
2run the command:
3 $ sudo stat -c "%a %n" /etc/gshadow-
4If properly configured, the output should indicate the following permissions:
5000  /etc/gshadow-
26
t3$ sudo stat -c "%a %n" /etc/gshadow-t7If /etc/gshadow- does not have unix mode 000, then this is a finding.
4 
50 /etc/gshadow-
6 
7If a value of "0" is not returned, this is a finding.

Fix

t1Change the mode of the file "/etc/gshadow-" to "0000" by running the following command:t1Change the permissions of the file "/etc/gshadow-" to "0000" by running the following command:
2 
3$ sudo chmod 0000 /etc/gshadow-2$ sudo chmod 0000 /etc/gshadow-

CCE-89272-9 - audit_rules_dac_modification_umount

Check

n1Verify that RHEL 9 generates an audit record for all uses of the "umount" and system call with the following command:n1Verify that RHEL 9 generates an audit record for all uses of the "umount" and system call.
2To determine if the system is configured to audit calls to the
3"umount" system call, run the following command:
2 $ sudo grep "umount" /etc/audit/audit.*4 $ sudo grep "umount" /etc/audit/audit.*
3If the system is configured to audit this activity, it will return a line like the following.5If the system is configured to audit this activity, it will return a line like the following.
4-a always,exit -F arch=b32 -S umount -F auid>=1000 -F auid!=unset -k privileged-umount6-a always,exit -F arch=b32 -S umount -F auid>=1000 -F auid!=unset -k privileged-umount
57
t6If the command does not return a line, or the line is commented out, this is a finding.t8If the command does not return a line, or the line is commented out, then this is a finding.

CCE-83957-1 - sysctl_kernel_unprivileged_bpf_disabled

Check

f1Verify RHEL 9 prevents privilege escalation thru the kernel by disabling access to the bpf syscall with the following commands:f1Verify RHEL 9 prevents privilege escalation thru the kernel by disabling access to the bpf syscall with the following commands:
22
t3$ sysctl kernel.unprivileged_bpf_disabledt3$ sudo sysctl kernel.unprivileged_bpf_disabled
44
5kernel.unprivileged_bpf_disabled = 15kernel.unprivileged_bpf_disabled = 1
66
7If the returned line does not have a value of "1", or a line is not returned, this is a finding.7If the returned line does not have a value of "1", or a line is not returned, this is a finding.

CCE-83453-1 - installed_OS_is_vendor_supported

Check

f1Verify that the version or RHEL 9 is vendor supported with the following command:f1Verify that the version or RHEL 9 is vendor supported with the following command:
22
t3$ cat/etc/redhat-releaset3$ grep -i "red hat" /etc/redhat-release
4 
45
5Red Hat Enterprise Linux release 9.0 (Plow)6Red Hat Enterprise Linux release 9.0 (Plow)
67
7If the installed version of RHEL 9 is not supported, this is a finding.8If the installed version of RHEL 9 is not supported, this is a finding.

CCE-85957-9 - audit_privileged_commands_poweroff

Check

n1Verify that RHEL 9 is configured to audit the execution of the "poweroff" command with the following command:n1Verify that an audit event is generated for any successful/unsuccessful use of the poweroff command by performing the following command to check the file system rules in "/etc/audit/audit.rules":
22
n3$ sudo auditctl -l | grep poweroffn3$ sudo grep -w poweroff /etc/audit/audit.rules
44
5-a always,exit -F path=/usr/sbin/poweroff -F perm=x -F auid>=1000 -F auid!=unset -k privileged-poweroff5-a always,exit -F path=/usr/sbin/poweroff -F perm=x -F auid>=1000 -F auid!=unset -k privileged-poweroff
66
t7If the command does not return a line, or the line is commented out, this is a finding.t7If the command does not return a line, or the line is commented out, then this is a finding.

CCE-88693-7 - dir_permissions_library_dirs

Check

n1Verify that RHEL 9 library directories have a mode of 755 or less with the following commands:n1Shared libraries are stored in the following directories:
2 /lib
3/lib64
4/usr/lib
5/usr/lib64
26
nn7To find shared libraries that are group-writable or world-writable,
8run the following command for each directory DIR which contains shared libraries:
3 $ sudo find -L /lib -perm /022 -type d9 $ sudo find -L DIR -perm /022 -type d
4 $ sudo find -L /lib64 -perm /022 -type d
5 $ sudo find -L /usr/lib -perm /022 -type d
6 $ sudo find -L /usr/lib64 -perm /022 -type d
710
t8If any of these directories are group-writable or world-writable, this is a findingt11If any of these files are group-writable or world-writable, then this is a finding.

CCE-83466-3 - partition_for_var

Check

n1Verify that a separate file system/partition has been created for "/var" with the following command:n1Verify that a separate file system/partition has been created for  /var  with the following command:
22
n3$ mount | grep /varn3 $ mountpoint /var
44
n5UUID=c274f65f-c5b5-4481-b007-bee96feb8b05 /var xfs noatime,nobarrier 1 2n
65
t7If a separate entry for "/var" is not in use, this is a finding.t6If "/var is is not a mountpoint" is returned, then this is a finding.

CCE-83785-6 - audit_rules_login_events_lastlog

Requirement

t1 RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /var/log/lastlog.t1RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /var/log/lastlog.

CCE-90821-0 - file_owner_sshd_config

Check

f1Verify the ownership of the "/etc/ssh/sshd_config" file with the following command:f1Verify the ownership of the "/etc/ssh/sshd_config" file with the following command:
22
3$ ls -al /etc/ssh/sshd_config3$ ls -al /etc/ssh/sshd_config
44
5rw-------. 1 root root 3669 Feb 22 11:34 /etc/ssh/sshd_config5rw-------. 1 root root 3669 Feb 22 11:34 /etc/ssh/sshd_config
66
t7If the "/etc/ssh/sshd_config" file does not have an owner of "root", this is a finding.t7If the "/etc/ssh/sshd_config" file does not have an owner of "root", then this is a finding.

CCE-83943-1 - file_owner_etc_passwd

Check

n1Verify the ownership of the "/etc/passwd" file with the following command:n1To check the ownership of /etc/passwd ,
2run the command:
3 $ sudo stat -c "%U %n" /etc/passwd
4If properly configured, the output should indicate the following owner:
5 root  /etc/passwd
26
t3$ sudo stat -c "%U %n" /etc/passwdt
4 
5root /etc/passwd
6 
7If "/etc/passwd" file does not have an owner of "root", this is a finding.7If /etc/passwd does not have an owner of root, then this is a finding.

CCE-83930-8 - file_groupowner_etc_shadow

Check

n1Verify the group ownership of the "/etc/shadow" file with the following command:n1To check the group ownership of /etc/shadow ,
2run the command:
3 $ sudo stat -c "%G %n" /etc/shadow
4If properly configured, the output should indicate the following group-owner:
5 root  /etc/shadow
26
t3$ sudo stat -c "%G %n" /etc/shadowt
4 
5root /etc/shadow
6 
7If "/etc/shadow" file does not have a group owner of "root", this is a finding.7If /etc/shadow does not have a group owner of root, then this is a finding.

Fix

f1Change the group of the file /etc/shadow to root by running the following command:f1Change the group of the file /etc/shadow to root by running the following command:
t2 t
3$ sudo chgrp root /etc/shadow2$ sudo chgrp root /etc/shadow

CCE-90096-9 - account_temp_expire_date

Vul_Discussion

t1Alan Mayt1If temporary user accounts remain active when no longer needed or for
2an excessive period, these accounts may be used to gain unauthorized access.
3To mitigate this risk, automated termination of all temporary accounts
4must be set upon account creation.

CCE-83725-2 - audit_rules_usergroup_modification_shadow

Requirement

t1 RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/shadow.t1RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/shadow.

CCE-83997-7 - sysctl_net_ipv4_conf_all_send_redirects

Check

f1Verify RHEL 9 does not IPv4 ICMP redirect messages.f1Verify RHEL 9 does not IPv4 ICMP redirect messages.
22
3Check the value of the "all send_redirects" variables with the following command:3Check the value of the "all send_redirects" variables with the following command:
44
t5$ sysctl net.ipv4.conf.all.send_redirectst5$ sudo sysctl net.ipv4.conf.all.send_redirects
66
7net.ipv4.conf.all.send_redirects = 07net.ipv4.conf.all.send_redirects = 0
88
9If the returned line does not have a value of "0", or a line is not returned, this is a finding.9If the returned line does not have a value of "0", or a line is not returned, this is a finding.
1010
11Check that the configuration files are present to enable this network parameter.11Check that the configuration files are present to enable this network parameter.
1212
13$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.conf.all.send_redirects | tail -113$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.conf.all.send_redirects | tail -1
1414
15net.ipv4.conf.all.send_redirects = 015net.ipv4.conf.all.send_redirects = 0
1616
17If "net.ipv4.conf.all.send_redirects" is not set to "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, or is missing, this is a finding.17If "net.ipv4.conf.all.send_redirects" is not set to "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, or is missing, this is a finding.

Fix

f1Configure RHEL 9 to not allow interfaces to perform IPv4 ICMP redirects.f1Configure RHEL 9 to not allow interfaces to perform IPv4 ICMP redirects.
22
3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:
44
t5net.ipv4.conf.all.send_redirects = 0t5net.ipv4.conf.all.send_redirects=0
66
7Load settings from all system configuration files with the following command:7Load settings from all system configuration files with the following command:
88
9$ sudo sysctl --system9$ sudo sysctl --system

CCE-84004-1 - sysctl_net_ipv4_icmp_echo_ignore_broadcasts

Check

f1Verify RHEL 9 does not respond to ICMP echoes sent to a broadcast address.f1Verify RHEL 9 does not respond to ICMP echoes sent to a broadcast address.
22
3Check the value of the "icmp_echo_ignore_broadcasts" variable with the following command:3Check the value of the "icmp_echo_ignore_broadcasts" variable with the following command:
44
t5$ sysctl net.ipv4.icmp_echo_ignore_broadcastst5$ sudo sysctl net.ipv4.icmp_echo_ignore_broadcasts
66
7net.ipv4.icmp_echo_ignore_broadcasts = 17net.ipv4.icmp_echo_ignore_broadcasts = 1
88
9If the returned line does not have a value of "1", a line is not returned, or the retuned line is commented out, this is a finding.9If the returned line does not have a value of "1", a line is not returned, or the retuned line is commented out, this is a finding.
1010
11Check that the configuration files are present to enable this network parameter.11Check that the configuration files are present to enable this network parameter.
1212
13$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.icmp_echo_ignore_broadcasts | tail -113$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.icmp_echo_ignore_broadcasts | tail -1
1414
15net.ipv4.icmp_echo_ignore_broadcasts = 115net.ipv4.icmp_echo_ignore_broadcasts = 1
1616
17If "net.ipv4.icmp_echo_ignore_broadcasts" is not set to "1" or is missing, this is a finding.17If "net.ipv4.icmp_echo_ignore_broadcasts" is not set to "1" or is missing, this is a finding.

Fix

f1Configure RHEL 9 to not respond to IPv4 ICMP echoes sent to a broadcast address.f1Configure RHEL 9 to not respond to IPv4 ICMP echoes sent to a broadcast address.
22
3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:
44
t5net.ipv4.icmp_echo_ignore_broadcasts = 1t5net.ipv4.icmp_echo_ignore_broadcasts=1
66
7Load settings from all system configuration files with the following command:7Load settings from all system configuration files with the following command:
88
9$ sudo sysctl --system9$ sudo sysctl --system

CCE-90590-1 - set_password_hashing_algorithm_logindefs

Vul_Discussion

t1Alan Mayt1Passwords need to be protected at all times, and encryption is the standard
2method for protecting passwords. If passwords are not encrypted, they can
3be plainly read (i.e., clear text) and easily compromised. Passwords that
4are encrypted with a weak algorithm are no more protected than if they are
5kepy in plain text.
6 
7 
8 
9This setting ensures user and group account administration utilities are
10configured to store only encrypted representations of passwords.
11Additionally, the "crypt_style" configuration option ensures the use
12of a strong hashing algorithm that makes password cracking attacks more
13difficult.

CCE-90823-6 - package_openssh-server_installed

Check

t1Verify that RHEL 9 has the openssh-server package installed with the following command:t1Verify that RHEL 9 has the openssh-server package installed with the following command:$ sudo dnf list --installed openssh-serveropenssh-server.x86_64    8.7p1-8.el9If the openssh-server package is not installed, this is a finding.
2 
3$ sudo dnf list --installed openssh-server
4 
5openssh-server.x86_64       8.7p1-8.el9
6 
7If the openssh-server package is not installed, this is a finding.

CCE-86249-0 - account_password_selinux_faillock_dir

Check

nn1If 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.
2 
1Verify the location of the non-default tally directory for the pam_faillock module with the following command:3Verify the location of the non-default tally directory for the pam_faillock module with the following command:
24
n3Note: 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
4 
5$ grep 'dir =' /etc/security/faillock.conf5$ sudo grep -w dir /etc/security/faillock.conf
66
7dir = /var/log/faillock7dir = /var/log/faillock
88
9Check the security context type of the non-default tally directory with the following command:9Check the security context type of the non-default tally directory with the following command:
1010
n11$ ls -Zd /var/log/faillockn11$ sudo ls -Zd /var/log/faillock
1212
13unconfined_u:object_r:faillog_t:s0 /var/log/faillock13unconfined_u:object_r:faillog_t:s0 /var/log/faillock
1414
t15If the security context type of the non-default tally directory is not "faillog_t", this is a finding.t15If the security context type of the non-default tally directory is not "faillog_t", then this is a finding.

CCE-90836-8 - package_openssh-clients_installed

Check

t1Verify that RHEL 9 has the openssh-clients package installed with the following command:t1Verify that RHEL 9 has the openssh-clients package installed with the following command:$sudo dnf list --installed openssh-clientsopenssh-clients.x86_64     8.7p1-8.el9If a openssh-clients package is not installed, this is a finding.
2 
3$sudo dnf list --installed openssh-clients
4 
5openssh-clients.x86_64       8.7p1-8.el9
6 
7If a openssh-clients package is not installed, this is a finding.

CCE-83939-9 - file_permissions_backup_etc_group

Requirement

t1The RHEL 9 /etc/group- file must have mode 0644 or less permissive to prevent unauthorized access.t1The RHEL 9 /etc/passwd- file must have 0644 or less permissive to prevent unauthorized access.

Check

n1Verify that the "/etc/group-" file has mode "0644" or less permissive with the following command:n1To check the permissions of /etc/group- ,
2 2run the command:
3$ sudo stat -c "%a %n" /etc/group-3 $ sudo stat -c "%a %n" /etc/group-
4 4If properly configured, the output should indicate the following permissions:
5644 /etc/group-5644 /etc/group-
66
t7If a value of "0644" or less permissive is not returned, this is a finding.t7If /etc/group- does not have unix mode 644, then this is a finding.

Fix

t1Change the mode of the file "/etc/group-" to "0644" by running the following command:t1Change the permissions of the file "/etc/passwd-" to "0644" by running the following command:
2 
3$ sudo chmod 0644 /etc/group-2$ sudo chmod 0644 /etc/passwd-

CCE-83720-3 - file_permissions_var_log_audit

Requirement

t1RHEL 9 audit logs file must have mode 0600 or less permissive to prevent unauthorized access to the audit log.t1RHEL 9 audit logs file must have mode 0640 or less permissive to prevent unauthorized access to the audit log.

Check

n1Verify the audit logs have a mode of "0600".n1Verify the audit logs have a mode of "0640".
22
3First determine where the audit logs are stored with the following command:3First determine where the audit logs are stored with the following command:
44
5$ sudo grep -iw log_file /etc/audit/auditd.conf5$ sudo grep -iw log_file /etc/audit/auditd.conf
66
7log_file = /var/log/audit/audit.log7log_file = /var/log/audit/audit.log
88
9Then using the location of the audit log file, determine if the audit log files as a mode of "0640" with the following command:9Then using the location of the audit log file, determine if the audit log files as a mode of "0640" with the following command:
1010
11$ sudo ls -la /var/log/audit/*.log11$ sudo ls -la /var/log/audit/*.log
1212
n13rw-------. 2 root root 237923 Jun 11 11:56 /var/log/audit/audit.logn13rw-rw----. 2 root root 237923 Jun 11 11:56 /var/log/audit/audit.log
1414
t15If the audit logs have a mode more permissive than "0600", this is a finding.t15If the audit logs have a mode more permissive than "0640", this is a finding.

Fix

n1Configure the audit logs to have a mode of "0600" with the following command:n1Configure the audit logs to have a mode of "0640" with the following command:
22
3Replace "[audit_log_file]" to the correct audit log path, by default this location is "/var/log/audit/audit.log".3Replace "[audit_log_file]" to the correct audit log path, by default this location is "/var/log/audit/audit.log".
44
t5$ sudo chmod 0600 /var/log/audit/[audit_log_file]t5$ sudo chmod 0640 /var/log/audit/[audit_log_file]
6Check the group that owns the system audit logs:6Check the group that owns the system audit logs:
77
8$ sudo grep -m 1 -q ^log_group /etc/audit/auditd.conf8$ sudo grep -m 1 -q ^log_group /etc/audit/auditd.conf
99
10If the log_group is not defined or it is set to root, configure the permissions the following way:10If the log_group is not defined or it is set to root, configure the permissions the following way:
1111
12$ sudo chmod 0640 $log_file12$ sudo chmod 0640 $log_file
13$ sudo chmod 0440 $log_file.*13$ sudo chmod 0440 $log_file.*
1414
15Otherwise, configure the permisssions the following way:15Otherwise, configure the permisssions the following way:
1616
17$ sudo chmod 0600 $log_file17$ sudo chmod 0600 $log_file
18$ sudo chmod 0400 $log_file.*18$ sudo chmod 0400 $log_file.*

CCE-83437-4 - aide_periodic_cron_checking

Vul_Discussion

t1Unauthorized 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.t1nauthorized 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.
22
3Detecting 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.3Detecting 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.
44
5Notifications provided by information systems include messages to local computer consoles, and/or hardware indications, such as lights.5Notifications provided by information systems include messages to local computer consoles, and/or hardware indications, such as lights.
66
7This 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.7This 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.

CCE-84068-6 - package_libreswan_installed

Check

f1Verify that RHEL 9 libreswan service package is installed.f1Verify that RHEL 9 libreswan service package is installed.
22
3Check that the libreswan service package is installed with the following command:3Check that the libreswan service package is installed with the following command:
44
t5$ sudo dnf list --installed libreswant5$ dnf list --installed libreswan
66
7libreswan.x86_64     4.6-3.el97libreswan.x86_64     4.6-3.el9
88
9If the libreswan package is not installed, this is a finding.9If the libreswan package is not installed, this is a finding.

CCE-83627-0 - account_disable_post_pw_expiration

Check

t1Verify that RHEL9 account identifiers (individuals, groups, roles, and devices) are disabled after 35 days of inactivity with the following command:t1Verify that RHEL 9 account identifiers (individuals, groups, roles, and devices) are disabled after 35 days of inactivity with the following command:
22
3Check the account inactivity value by performing the following command:3Check the account inactivity value by performing the following command:
44
5$ sudo grep -i inactive /etc/default/useradd5$ sudo grep -i inactive /etc/default/useradd
66
7INACTIVE=357INACTIVE=35
88
9If "INACTIVE" is set to "-1", a value greater than "35", or is commented out, this is a finding.9If "INACTIVE" is set to "-1", a value greater than "35", or is commented out, this is a finding.

CCE-84011-6 - sysctl_net_ipv4_conf_all_accept_redirects

Check

f1Verify RHEL 9 will not accept IPv4 ICMP redirect messages.f1Verify RHEL 9 will not accept IPv4 ICMP redirect messages.
22
3Check the value of the all "accept_redirects" variables with the following command:3Check the value of the all "accept_redirects" variables with the following command:
44
t5$ sysctl net.ipv4.conf.all.accept_redirectst5$ sudo sysctl net.ipv4.conf.all.accept_redirects
66
7net.ipv4.conf.all.accept_redirects = 07net.ipv4.conf.all.accept_redirects = 0
88
9If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.9If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.
1010
11Check that the configuration files are present to enable this network parameter.11Check that the configuration files are present to enable this network parameter.
1212
13$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.conf.all.accept_redirects | tail -113$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv4.conf.all.accept_redirects | tail -1
1414
15net.ipv4.conf.all.accept_redirects = 015net.ipv4.conf.all.accept_redirects = 0
1616
17If "net.ipv4.conf.all.accept_redirects" is not set to "0" or is missing, this is a finding.17If "net.ipv4.conf.all.accept_redirects" is not set to "0" or is missing, this is a finding.

CCE-86932-1 - account_password_pam_faillock_password_auth

Check

f1Verify the pam_faillock.so module is present in the "/etc/pam.d/password-auth" file:f1Verify the pam_faillock.so module is present in the "/etc/pam.d/password-auth" file:
22
n3$ grep pam_faillock.so /etc/pam.d/password-authn3$ sudo grep pam_faillock.so /etc/pam.d/password-auth
44
5auth required pam_faillock.so preauth5auth required pam_faillock.so preauth
6auth required pam_faillock.so authfail6auth required pam_faillock.so authfail
7account required pam_faillock.so7account required pam_faillock.so
88
t9If 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.t9If 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, then this is a finding.

CCE-90838-4 - mount_option_nodev_remote_filesystems

Vul_Discussion

t1 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 unprivileged users to attain unauthorized administrative access.t1The "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 unprivileged users to attain unauthorized administrative access.

CCE-83965-4 - sysctl_kernel_yama_ptrace_scope

Vul_Discussion

f1Unrestricted usage of ptrace allows compromised binaries to run ptrace on another processes of the user. Like this, the attacker can stealf1Unrestricted usage of ptrace allows compromised binaries to run ptrace on another processes of the user. Like this, the attacker can steal
2sensitive 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).2sensitive 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).
t3 t

Check

f1Verify RHEL 9 restricts usage of ptrace to descendant processes with the following commands:f1Verify RHEL 9 restricts usage of ptrace to descendant processes with the following commands:
22
t3$ sysctl kernel.yama.ptrace_scopet3$ sudo sysctl kernel.yama.ptrace_scope
44
5kernel.yama.ptrace_scope = 15kernel.yama.ptrace_scope = 1
66
7If the returned line does not have a value of "1", or a line is not returned, this is a finding.7If the returned line does not have a value of "1", or a line is not returned, this is a finding.

CCE-83463-0 - ensure_gpgcheck_local_packages

Requirement

t1RHEL 9 must check the GPG signature of locally installed packages.t1RHEL 9 must check the GPG sign of locally installed packages.

CCE-83623-9 - no_shelllogin_for_systemaccounts

Check

f1To obtain a listing of all users, their UIDs, and their shells, run thef1To obtain a listing of all users, their UIDs, and their shells, run the
2command:2command:
33
4$ awk -F: '{print $1 ":" $3 ":" $7}' /etc/passwd4$ awk -F: '{print $1 ":" $3 ":" $7}' /etc/passwd
55
6Identify the system accounts from this listing. These will primarily be the accounts6Identify the system accounts from this listing. These will primarily be the accounts
7with UID numbers less than UID_MIN, other than root. Value of the UID_MIN7with UID numbers less than UID_MIN, other than root. Value of the UID_MIN
8directive is set in /etc/login.defs configuration file. In the default8directive is set in /etc/login.defs configuration file. In the default
9configuration UID_MIN is set to 1000.9configuration UID_MIN is set to 1000.
1010
t11If any system account (other than root) has a login shell, this is a finding.t11If any system account (other than root) has a login shell, then this is a finding.

Fix

n1Configure RHEL 9 so that all non-interactive accounts on the system do not have an interactive shell assigned to them.n1Configure RHEL 9 so that all non-interactive accounts on the system have no interactive shell assigned to them.
22
3Run the following command to disable the interactive shell for a specific non-interactive user account:3Run the following command to disable the interactive shell for a specific non-interactive user account:
44
5$ sudo usermod --shell /sbin/nologin nobody5$ sudo usermod --shell /sbin/nologin nobody
66
t7Do not perform the steps in this section on the root account. Doing so will cause the system to become inaccessible.t7Do not perform the steps in this section on the root account. Doing so mightcause the system to become inaccessible.

CCE-83712-0 - audit_rules_usergroup_modification_opasswd

Requirement

t1 RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/opasswd.t1RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/opasswd.

CCE-89498-0 - audit_rules_sudoers_d

Requirement

t1 RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/sudoers.d/.t1RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/sudoers.d/.

CCE-84114-8 - sysctl_net_ipv6_conf_all_forwarding

Check

f1Verify RHEL 9 is not performing IPv6 packet forwarding, unless the system is a router.f1Verify RHEL 9 is not performing IPv6 packet forwarding, unless the system is a router.
22
3Note: If IPv6 is disabled on the system, this requirement is Not Applicable.3Note: If IPv6 is disabled on the system, this requirement is Not Applicable.
44
5Check that IPv6 forwarding is disabled using the following commands:5Check that IPv6 forwarding is disabled using the following commands:
66
t7$ sysctl net.ipv6.conf.all.forwardingt7$ sudo sysctl net.ipv6.conf.all.forwarding
88
9net.ipv6.conf.all.forwarding = 09net.ipv6.conf.all.forwarding = 0
1010
11If the IPv6 forwarding value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.11If the IPv6 forwarding value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.
1212
13Check that the configuration files are present to enable this network parameter.13Check that the configuration files are present to enable this network parameter.
1414
15$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv6.conf.all.forwarding | tail -115$ { /usr/lib/systemd/systemd-sysctl --cat-config; cat /etc/sysctl.conf; } | egrep -v '^(#|$)' | grep -F net.ipv6.conf.all.forwarding | tail -1
1616
17net.ipv6.conf.all.forwarding = 017net.ipv6.conf.all.forwarding = 0
1818
19If "net.ipv6.conf.all.forwarding" is not set to "0" or is missing, this is a finding.19If "net.ipv6.conf.all.forwarding" is not set to "0" or is missing, this is a finding.

Fix

f1Configure RHEL 9 to not allow IPv6 packet forwarding, unless the system is a router.f1Configure RHEL 9 to not allow IPv6 packet forwarding, unless the system is a router.
22
3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:3Add or edit the following line in a single system configuration file, in the "/etc/sysctl.d/" directory:
44
t5net.ipv6.conf.all.forwarding = 0t5net.ipv6.conf.all.forwarding=0
66
7Load settings from all system configuration files with the following command:7Load settings from all system configuration files with the following command:
88
9$ sudo sysctl --system9$ sudo sysctl --system

CCE-87757-1 - aide_check_audit_tools

Fix

f1Add or update the following lines to "/etc/aide.conf", to protect the integrity of the audit tools.f1Add or update the following lines to "/etc/aide.conf", to protect the integrity of the audit tools.
22
3/usr/sbin/auditctl p+i+n+u+g+s+b+acl+xattrs+sha5123/usr/sbin/auditctl p+i+n+u+g+s+b+acl+xattrs+sha512
4/usr/sbin/auditd p+i+n+u+g+s+b+acl+xattrs+sha5124/usr/sbin/auditd p+i+n+u+g+s+b+acl+xattrs+sha512
5/usr/sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha5125/usr/sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512
6/usr/sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha5126/usr/sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512
7/usr/sbin/autrace p+i+n+u+g+s+b+acl+xattrs+sha5127/usr/sbin/autrace p+i+n+u+g+s+b+acl+xattrs+sha512
8/usr/sbin/autrace p+i+n+u+g+s+b+acl+xattrs+sha5128/usr/sbin/autrace p+i+n+u+g+s+b+acl+xattrs+sha512
9/usr/sbin/augenrules p+i+n+u+g+s+b+acl+xattrs+sha5129/usr/sbin/augenrules p+i+n+u+g+s+b+acl+xattrs+sha512
t10 t
11 
12 

CCE-83924-1 - file_owner_etc_gshadow

Check

n1Verify the ownership of the "/etc/gshadow" file with the following command:n1To check the ownership of /etc/gshadow ,
2run the command:
3 $ sudo stat -c "%U %n" /etc/gshadow
4If properly configured, the output should indicate the following owner:
5 root /etc/gshadow
26
t3$ sudo stat -c "%U %n" /etc/gshadowt
4 
5root /etc/gshadow
6 
7If "/etc/gshadow" file does not have an owner of "root", this is a finding.7If /etc/gshadow does not have an owner of root, then this is a finding.

CCE-86208-6 - harden_sshd_macs_openssh_conf_crypto_policy

Requirement

t1RHEL 9 SSH client must be configured to use only Message Authentication Codes (MACs) employing FIPS 140-2 validated cryptographic hash algorithms.t1RHEL 9 SSH server must be configured to use only Message Authentication Codes (MACs) employing FIPS 140-2 validated cryptographic hash algorithms.

Check

n1Verify SSH cllient is configured to use only ciphers employing FIPS 140-3 approved algorithms with the following command:n1Verify SSH cllient is configured to use only ciphers employing FIPS 140-3-approved algorithms with the following command:
22
3$ sudo grep -i macs /etc/crypto-policies/back-ends/openssh.config3$ sudo grep -i macs /etc/crypto-policies/back-ends/openssh.config
4MACs hmac-sha2-512,hmac-sha2-2564MACs hmac-sha2-512,hmac-sha2-256
55
66
7If the MACs entries in the "openssh.config" file have any hashes other than "hmac-sha2-512" and "hmac-sha2-256", the order differs from the example above, they are missing, or commented out, this is a finding.7If the MACs entries in the "openssh.config" file have any hashes other than "hmac-sha2-512" and "hmac-sha2-256", the order differs from the example above, they are missing, or commented out, this is a finding.
t8 t

Fix

n1Configure the RHEL 9 SSH client to use only MACs employing FIPS 140-3 approved algorithms by updating the "/etc/crypto-policies/back-ends/openssh.config" file with the following line:n1Configure the RHEL 9 SSH client to use only MACs employing FIPS 140-3-approved algorithms by updating the "/etc/crypto-policies/back-ends/openssh.config" file with the following line:
22
3MACs hmac-sha2-512,hmac-sha2-2563MACs hmac-sha2-512,hmac-sha2-256
44
5A reboot is required for the changes to take effect.5A reboot is required for the changes to take effect.
t6 t

CCE-83452-3 - configure_openssl_crypto_policy

Check

n1Verify that RHEL 9 OpenSSL library is configured to use only ciphers employing FIPS 140-3 approved algorithms with the following command:n1Verify that RHEL 9 OpenSSL library is configured to use only ciphers employing FIPS 140-3-approved algorithms:
2 
3Verify that system-wide crypto policies are in effect:
24
3$ sudo grep -i opensslcnf.config /etc/pki/tls/openssl.cnf5$ sudo grep -i opensslcnf.config /etc/pki/tls/openssl.cnf
46
t5.include = /etc/crypto-policies/back-ends/opensslcnf.configt7.include /etc/crypto-policies/back-ends/opensslcnf.config
68
7If the "opensslcnf.config" is not defined in the "/etc/pki/tls/openssl.cnf" file, this is a finding.9If the "opensslcnf.config" is not defined in the "/etc/pki/tls/openssl.cnf" file, this is a finding.

Fix

t1Configure the RHEL 9 OpenSSL library to use only ciphers employing FIPS 140-3 approved algorithms with the following command:t1Configure the RHEL 9 OpenSSL library to use only ciphers employing FIPS 140-3-approved algorithms with the following command:
22
3$ sudo fips-mode-setup --enable3$ sudo fips-mode-setup --enable
44
5A reboot is required for the changes to take effect.5A reboot is required for the changes to take effect.

CCE-88653-1 - dconf_gnome_disable_ctrlaltdel_reboot

Requirement

t1RHEL 9 must disable the ability of a user to accidentally press Ctrl-Alt-Del and cause a system to shut down or reboot.t1RHEL 9 must prevent a user from overriding the Ctrl-Alt-Del sequence settings for the graphical user interface.

Check

n1Verify RHEL 9 is configured to ignore the Ctrl-Alt-Del sequence in the Gnome GUI with the following command:n1To ensure that users cannot enable the Ctrl-Alt-Del sequence in the Gnome GUI, run the following:
22
3Note: This requirement assumes the use of the RHEL 9 default graphical user interface, Gnome Shell. If the system does not have any graphical user interface installed, this requirement is Not Applicable.3Note: This requirement assumes the use of the RHEL 9 default graphical user interface, Gnome Shell. If the system does not have any graphical user interface installed, this requirement is Not Applicable.
44
n5$ gsettings get org.gnome.settings-daemon.plugins.media-keys logoutn5 $ grep logout /etc/dconf/db/local.d/locks/*
66
n7"['']"n7If properly configured, the output should be:
88
tt9"/org/gnome/settings-daemon/plugins/media-keys/logout"
10 
9If Gnome is configured to shut down when Ctrl-Alt-Del is pressed, this is a finding.11If Gnome can be configured to shut down when Ctrl-Alt-Del is pressed, then this is a finding.

Fix

n1Configure RHEL 9 to ignore the Ctrl-Alt-Del sequence in the GNOME GUI, if it is installed and the system is used to host services whos availability could be impacted.n1Configure RHEL 9 to disallow the user changing the Ctrl-Alt-Del sequence in the GNOME GUI, if it is installed and the system is used to host services whos availability could be impacted.
22
n3Add or update the [org/gnome/settings-daemon/plugins/media-keys] section of the /etc/dconf/db/local.d/00-security-settings database file and add or update the following lines:n3Create a database to container system-wide graphical user logon settings (if it does not already exist) with the following command:
44
tt5$ sudo touch /etc/dconf/db/local.d/locks/session
6 
7Add the following line to the session locks file to prevent unprivileged users from modifying the Ctrl-Alt-Del setting:
8 
5[org/gnome/settings-daemon/plugins/media-keys]9/org/gnome/settings-daemon/plugins/media-keys/logout
6logout=['']
710
8Run the following command to update the database:11Run the following command to update the database:
912
10$ sudo dconf update13$ sudo dconf update

CCE-88964-2 - accounts_user_interactive_home_directory_defined

Check

f1Verify that interactive users on the system have a home directory assigned with the following command:f1Verify that interactive users on the system have a home directory assigned with the following command:
22
3$ sudo awk -F: '($3>=1000)&&($7 !~ /nologin/){print $1, $3, $6}' /etc/passwd3$ sudo awk -F: '($3>=1000)&&($7 !~ /nologin/){print $1, $3, $6}' /etc/passwd
44
n5smithk:x:1000:1000:smithk:/home/smithk:/bin/bashn
6throckw:x:1001:1001:throckw:/home/throckw:/bin/bash
7 
8Inspect the output and verify that all interactive users (normally users with a UID greater that 1000) have a home directory defined.5Inspect the output and verify that all interactive users (normally users with a UID greater that 1000) have a home directory defined.
96
t10If users home directory is not defined, this is a finding.t7If users home directory is not defined, then this is a finding.

Fix

t1Create and assign home directories to all local interactive users on RHEL 9 that currently do not have a home directory assigned.t1Assign home directories to all local interactive users on RHEL 9 that currently do not have a home directory assigned.

CCE-85941-3 - service_systemd-journald_enabled

Requirement

t1The RHEL 9 systemd-journald service must be enabled.t1The RHEL 9 service systemd-journald must be enabled.

Check

n1Verify that "systemd-journald" is active with the following command:n1Run the following command to determine the current status of the
2 systemd-journald service:
3 $ sudo systemctl is-active systemd-journald
4If the service is running, it should return the following: active
25
t3$ systemctl is-active systemd-journaldt
4 
5active
6 
7If the systemd-journald service is not active, this is a finding.6If the systemd-journald service is not running, then this is a finding.

CCE-83723-7 - audit_rules_usergroup_modification_gshadow

Requirement

t1 RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/gshadow.t1RHEL 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/gshadow.

CCE-83935-7 - file_permissions_backup_etc_shadow

Requirement

t1The RHEL 9 /etc/shadow- file must have mode 0000 or less permissive to prevent unauthorized access.t1The RHEL 9 /etc/shadow- file must have 0000 or less permissive to prevent unauthorized access.

Check

n1Verify that the "/etc/shadow-" file has mode "0000" with the following command:n1To check the permissions of /etc/shadow- ,
2run the command:
3 $ sudo stat -c "%a %n" /etc/shadow-
4If properly configured, the output should indicate the following permissions:
5000 /etc/shadow-
26
t3$ sudo stat -c "%a %n" /etc/shadow-t7If /etc/shadow- does not have unix mode 000, then this is a finding.
4 
50 /etc/shadow-
6 
7If a value of "0" is not returned, this is a finding.

Fix

t1Change the mode of the file "/etc/shadow-" to "0000" by running the following command:t1Change the permissions of the file "/etc/shadow-" to "0000" by running the following command:
2 
3$ sudo chmod 0000 /etc/shadow-2$ sudo chmod 0000 /etc/shadow-

CCE-84224-5 - package_fapolicyd_installed

Fix

t1The  fapolicyd  package can be installed with the following command:t1The fapolicyd package can be installed with the following command:
22
3$ sudo dnf install fapolicyd3$ sudo dnf install fapolicyd

CCE-83948-0 - file_groupowner_etc_gshadow

Check

n1Verify the group ownership of the "/etc/gshadow" file with the following command:n1To check the group ownership of /etc/gshadow ,
2run the command:
3 $ sudo stat -c "%G %n" /etc/gshadow
4If properly configured, the output should indicate the following group-owner:
5 root /etc/gshadow
26
t3$ sudo stat -c "%G %n" /etc/gshadowt
4 
5root /etc/gshadow
6 
7If "/etc/gshadow" file does not have a group owner of "root", this is a finding.7If /etc/gshadow does not have a group owner of root, then this is a finding.

Fix

f1Change the group of the file /etc/gshadow to root by running the following command:f1Change the group of the file /etc/gshadow to root by running the following command:
t2 t
3$ sudo chgrp root /etc/gshadow2$ sudo chgrp root /etc/gshadow

CCE-83928-2 - file_groupowner_backup_etc_group

Check

n1Verify the group ownership of the "/etc/group-" file with the following command:n1To check the group ownership of /etc/group- ,
2run the command:
3 $ sudo stat -c "%U %n" /etc/group-
4If properly configured, the output should indicate the following group-owner:
5 root /etc/group-
26
t3$ sudo stat -c "%G %n" /etc/group-t
4 
5root /etc/group-
6 
7If "/etc/group-" file does not have a group owner of "root", this is a finding.7If /etc/group- does not have a group owner of root, then this is a finding.

Fix

f1Change the group of the file /etc/group- to root by running the following command:f1Change the group of the file /etc/group- to root by running the following command:
t2 t
3$ sudo chgrp root /etc/group-2$ sudo chgrp root /etc/group-

CCE-83709-6 - audit_rules_system_shutdown

Vul_Discussion

t1Alan Mayt1It is critical for the appropriate personnel to be aware if a system
2is at risk of failing to process audit logs as required. Without this
3notification, the security personnel may be unaware of an impending failure of
4the audit capability, and system operation may be adversely affected.
5 
6 
7 
8Audit processing failures include software/hardware errors, failures in the
9audit capturing mechanisms, and audit storage capacity being reached or
10exceeded.

Fix

f1Configure RHEL 9 to shutdown when auditing failures occur.f1Configure RHEL 9 to shutdown when auditing failures occur.
22
3Add the following line to the bottom of the /etc/audit/audit.rules file:3Add the following line to the bottom of the /etc/audit/audit.rules file:
t4 t
5-f 24-f 2