{"stig":{"title":"Cloud Linux AlmaLinux OS 9 Security Technical Implementation Guide","version":"1","release":"6"},"checks":[{"vulnId":"V-269102","ruleId":"SV-269102r1049984_rule","severity":"low","ruleTitle":"AlmaLinux OS 9 must limit the number of concurrent sessions to ten for all accounts and/or account types.","description":"Operating system management includes the ability to control the number of users and user sessions that use an operating system. Limiting the number of allowed users and sessions per user is helpful in reducing the risks related to denial-of-service (DoS) attacks.\n\nThis requirement addresses concurrent sessions for information system accounts and does not address concurrent sessions by single users via multiple system accounts. The maximum number of concurrent sessions should be defined based upon mission needs and the operational environment for each system.","checkContent":"Verify AlmaLinux OS 9 limits the number of concurrent sessions to \"10\" for all accounts and/or account types with the following command:\n\n$ grep -rs maxlogins /etc/security/limits.conf /etc/security/limits.d/*.conf\n\n/etc/security/limits.d/maxlogins.conf:* hard maxlogins 10\n\nThis can be set as a global domain (with the * wildcard) but may be set differently for multiple domains.\n\nIf the \"maxlogins\" item is missing, commented out, or the value is set greater than 10, this is a finding.","fixText":"Configure AlmaLinux OS 9 to limit the number of concurrent sessions to \"10\" for all accounts and/or account types.\n\nAdd the following line to the top of the /etc/security/limits.conf or in a \".conf\" file defined in /etc/security/limits.d/:\n\n* hard maxlogins 10","ccis":["CCI-000054"]},{"vulnId":"V-269103","ruleId":"SV-269103r1101811_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must automatically lock graphical user sessions after 15 minutes of inactivity.","description":"A session lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not log out because of the temporary nature of the absence.\n\nThe session lock is implemented at the point where session activity can be determined. The operating system session lock event must include an obfuscation of the display screen so as to prevent other users from reading what was previously displayed.\n\nPublicly viewable images can include static or dynamic images, for example, patterns used with screen savers, photographic images, solid colors, a clock, a battery life indicator, or a blank screen, with the additional caveat that none of the images convey sensitive information.","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 initiates a session lock after a 10-minute period of inactivity for graphical user interfaces with the following command:\n\n$ gsettings get org.gnome.desktop.session idle-delay\n\nuint32 600\n\nIf \"idle-delay\" is set to \"0\" or a value greater than \"600\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to initiate a screensaver after a 10-minute period of inactivity for graphical user interfaces.\n\nCreate a database to contain the systemwide screensaver settings (if it does not already exist) with the following command:\n\n$ touch /etc/dconf/db/local.d/00-screensaver\n\nEdit /etc/dconf/db/local.d/00-screensaver and add or update the following lines:\n\n[org/gnome/desktop/session]\n# Set the lock time out to 600 seconds before the session is considered idle\nidle-delay=uint32 600\n\nUpdate the system databases:\n\n$ dconf update","ccis":["CCI-000060"]},{"vulnId":"V-269104","ruleId":"SV-269104r1049986_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must conceal, via the session lock, information previously visible on the display with a publicly viewable image.","description":"Setting the screensaver mode to blank-only conceals the contents of the display from passersby.","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nTo ensure the screensaver is configured to be blank, run the following command:\n\n$ gsettings get org.gnome.desktop.screensaver picture-uri \n\nIf properly configured, the output should be \"''\".\n\nTo ensure that users cannot set the screensaver background, run the following: \n\n$ grep picture-uri /etc/dconf/db/local.d/locks/* \n\nIf properly configured, the output should be \"/org/gnome/desktop/screensaver/picture-uri\".\n\nIf it is not set or configured properly, this is a finding.","fixText":"Configure AlmaLinux OS 9 to prevent a user from overriding the picture-uri setting for graphical user interfaces.\n\nFirst, in the file \"/etc/dconf/db/local.d/00-security-settings\" add or update the following lines:\n\n[org/gnome/desktop/screensaver]\npicture-uri=''\n\nThen, prevent user modification by adding the following line to \"/etc/dconf/db/local.d/locks/00-security-settings-lock\":\n\n/org/gnome/desktop/screensaver/picture-uri\n\nUpdate the dconf system databases:\n\n$ dconf update","ccis":["CCI-000060"]},{"vulnId":"V-269105","ruleId":"SV-269105r1101820_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent a user from overriding the session idle-delay setting for the graphical user interface.","description":"A session lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not log out because of the temporary nature of the absence.\n\nThe session lock is implemented at the point where session activity can be determined. The operating system session lock event must include an obfuscation of the display screen so as to prevent other users from reading what was previously displayed.","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 prevents a user from overriding settings for graphical user interfaces.\n\nDetermine which profile the system database is using with the following command:\n\n$ grep system-db /etc/dconf/profile/user\n\nsystem-db:local\n\nCheck that graphical settings are locked from nonprivileged user modification with the following command:\n\nNote: The example below is using the database \"local\" for the system, so the path is \"/etc/dconf/db/local.d\". This path must be modified if a database other than \"local\" is being used.\n\n$ grep -i idle /etc/dconf/db/local.d/locks/*\n\n/org/gnome/desktop/session/idle-delay\n\nIf the command does not return at least the example result, this is a finding.","fixText":"Configure AlmaLinux OS 9 to prevent a user from overriding settings for graphical user interfaces.\n\nCreate a database to contain the systemwide screensaver settings (if it does not already exist) with the following command: \n\nNote: The example below is using the database \"local\" for the system, so if the system is using another database in \"/etc/dconf/profile/user\", the file should be created under the appropriate subdirectory.\n\n$ touch /etc/dconf/db/local.d/locks/session\n\nAdd the following setting to prevent nonprivileged users from modifying it:\n\n/org/gnome/desktop/session/idle-delay\n\nUpdate the system databases:\n\n$ dconf update","ccis":["CCI-000060"]},{"vulnId":"V-269106","ruleId":"SV-269106r1049988_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must initiate a session lock for graphical user interfaces when the screensaver is activated.","description":"A session lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not want to logout because of the temporary nature of the absence.","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 initiates a session lock for graphical user interfaces when the screensaver is activated with the following command:\n\n$ gsettings get org.gnome.desktop.screensaver lock-delay\n\nuint32 5\n\nIf the \"uint32\" setting is not set to \"5\" or less, or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to initiate a session lock for graphical user interfaces when a screensaver is activated.\n\nCreate a database to contain the systemwide screensaver settings (if it does not already exist) with the following command: \n\nNote: The example below is using the database \"local\" for the system, so if the system is using another database in \"/etc/dconf/profile/user\", the file should be created under the appropriate subdirectory.\n\n$ touch /etc/dconf/db/local.d/00-screensaver\n\n[org/gnome/desktop/screensaver]\nlock-delay=uint32 5\n\nThe \"uint32\" must be included along with the integer key values as shown.\n\nUpdate the system databases:\n\n$ dconf update","ccis":["CCI-000057"]},{"vulnId":"V-269107","ruleId":"SV-269107r1049989_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent a user from overriding the session lock-delay setting for the graphical user interface.","description":"A session time-out lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not logout because of the temporary nature of the absence. Rather than relying on the user to manually lock their operating system session prior to vacating the vicinity, the GNOME desktop can be configured to identify when a user's session has idled and take action to initiate the session lock. As such, users should not be allowed to change session settings.","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 prevents a user from overriding settings for graphical user interfaces. \n\nDetermine which profile the system database is using with the following command:\n\n$ grep system-db /etc/dconf/profile/user\n\nsystem-db:local\n\nCheck that graphical settings are locked from nonprivileged user modification with the following command:\n\nNote: The example below is using the database \"local\" for the system, so the path is \"/etc/dconf/db/local.d\". This path must be modified if a database other than \"local\" is being used.\n\n$ grep -i lock-delay /etc/dconf/db/local.d/locks/*\n\n /etc/dconf/db/local.d/locks/session:/org/gnome/desktop/screensaver/lock-delay\n\nIf the command does not return at least the example result, this is a finding.","fixText":"Configure AlmaLinux OS 9 to prevent a user from overriding settings for graphical user interfaces.\n\nCreate a database to contain the systemwide screensaver settings (if it does not already exist) with the following command: \n\nNote: The example below is using the database \"local\" for the system, so if the system is using another database in \"/etc/dconf/profile/user\", the file should be created under the appropriate subdirectory.\n\n$ touch /etc/dconf/db/local.d/locks/session\n\nAdd the following setting to prevent nonprivileged users from modifying it:\n\n/org/gnome/desktop/screensaver/lock-delay\n\nUpdate the system databases:\n\n$ dconf update","ccis":["CCI-000057"]},{"vulnId":"V-269108","ruleId":"SV-269108r1049990_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must automatically exit interactive command shell user sessions after 10 minutes of inactivity.","description":"Terminating an idle interactive command shell user session within a short time period reduces the window of opportunity for unauthorized personnel to take control of it when left unattended in a virtual terminal or physical console.\n\nDeclaring $TMOUT as read-only means the user cannot override the setting.\n\nSatisfies: SRG-OS-000029-GPOS-00010, SRG-OS-000281-GPOS-00111, SRG-OS-000163-GPOS-00072","checkContent":"Verify AlmaLinux OS 9 is configured to exit interactive command shell user sessions after 10 minutes of inactivity or less with the following command:\n\n$ grep TMOUT /etc/profile /etc/profile.d/*.sh\n\n/etc/profile.d/tmout.sh:declare -xr TMOUT=600\n\nIf \"TMOUT\" is not set to \"600\" or less in a script located in the \"/etc/'profile.d/ directory, is missing or is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to exit interactive command shell user sessions after 10 minutes of inactivity using the following command:\n\necho \"declare -xr TMOUT=600\" > /etc/profile.d/tmout.sh","ccis":["CCI-000057","CCI-002364","CCI-001133"]},{"vulnId":"V-269109","ruleId":"SV-269109r1049991_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must be able to directly initiate a session lock for all connection types using smart card when the smart card is removed.","description":"A session lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not want to log out because of the temporary nature of the absence.\n\nThe session lock is implemented at the point where session activity can be determined.\n\nRegardless of where the session lock is determined and implemented, once invoked, the session lock must remain in place until the user re-authenticates. No other activity aside from re-authentication must unlock the system.","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 enables a user's session lock until that user re-establishes access using established identification and authentication procedures with the following command:\n\n$ grep -R removal-action= /etc/dconf/db/*\n\n/etc/dconf/db/distro.d/00-security-settings:removal-action='lock-screen'\n\nIf the \"removal-action='lock-screen'\" setting is missing or commented out from the dconf database files, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enable a user's session lock until that user re-establishes access using established identification and authentication procedures.\n\nSelect or create an authselect profile and incorporate the \"with-smartcard-lock-on-removal\" feature with the following example:\n\n$ authselect select sssd with-smartcard with-smartcard-lock-on-removal\n\nAlternatively, the dconf settings can be edited in the /etc/dconf/db/* location.\n\nAdd or update the [org/gnome/settings-daemon/peripherals/smartcard] section of the /etc/dconf/db/local.d/00-security-settings\" database file and add or update the following lines:\n\n[org/gnome/settings-daemon/peripherals/smartcard]\nremoval-action='lock-screen'\n\nThen update the dconf system databases:\n\n$ dconf update","ccis":["CCI-000056"]},{"vulnId":"V-269110","ruleId":"SV-269110r1049992_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent a user from overriding the disabling of the graphical user smart card removal action.","description":"A session lock is a temporary action taken when a user stops work and moves away from the immediate physical vicinity of the information system but does not want to log out because of the temporary nature of the absence.\n\nThe session lock is implemented at the point where session activity can be determined.\n\nRegardless of where the session lock is determined and implemented, once invoked, the session lock must remain in place until the user re-authenticates. No other activity aside from re-authentication must unlock the system.","checkContent":"Verify AlmaLinux OS 9 disables the ability of the user to override the smart card removal action setting.\n\nNote: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nDetermine which profile the system database is using with the following command:\n\n$ grep system-db /etc/dconf/profile/user\n\nsystem-db:local\n\nCheck that the removal action setting is locked from nonprivileged user modification with the following command:\n\nNote: The example below is using the database \"local\" for the system, so the path is \"/etc/dconf/db/local.d\". This path must be modified if a database other than \"local\" is being used.\n\n$ grep 'removal-action' /etc/dconf/db/local.d/locks/* \n\n/etc/dconf/db/local.d/locks/00-security-settings-lock:/org/gnome/settings-daemon/peripherals/smartcard/removal-action\n\nIf the command does not return at least the example result, this is a finding.","fixText":"Add the following line to \"/etc/dconf/db/local.d/locks/00-security-settings-lock\" to prevent user override of the smart card removal action:\n\n/org/gnome/settings-daemon/peripherals/smartcard/removal-action\n\nThen, update the dconf system databases:\n\n$ dconf update","ccis":["CCI-000056"]},{"vulnId":"V-269111","ruleId":"SV-269111r1050605_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must log SSH connection attempts and failures to the server.","description":"Remote access services, such as those providing remote access to network devices and information systems, which lack automated monitoring capabilities, increase risk, and make remote user access management difficult at best.\n\nRemote access is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nAutomated monitoring of remote access sessions allows organizations to detect cyber attacks and also ensure ongoing compliance with remote access policies by auditing connection activities of remote access capabilities, such as Remote Desktop Protocol (RDP), on a variety of information system components (e.g., servers, workstations, notebook computers, smartphones, and tablets).\n\nSSH provides several logging levels with varying amounts of verbosity. \"DEBUG\" is specifically not recommended other than strictly for debugging SSH communications since it provides so much data that it is difficult to identify important security information. \"INFO\" or \"VERBOSE\" level is the basic level that only records login activity of SSH users. In many situations, such as Incident Response, it is important to determine when a particular user was active on a system. The logout record can eliminate those users who disconnected, which helps narrow the field.","checkContent":"Verify AlmaLinux OS 9 logs SSH connection attempts and failures to the server.\n\nCheck what the SSH daemon's \"LogLevel\" option is set to with the following command:\n\n$ sshd -T | grep loglevel\n\nloglevel VERBOSE\n\nIf a value of \"VERBOSE\" is not returned, or is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to log SSH connection attempts by running the following command:\n\n$ echo \"LogLevel VERBOSE\" > /etc/ssh/sshd_config.d/40-loglevel.conf","ccis":["CCI-000067"]},{"vulnId":"V-269112","ruleId":"SV-269112r1050606_rule","severity":"medium","ruleTitle":"All AlmaLinux OS 9 remote access methods must be monitored.","description":"Remote access services, such as those providing remote access to network devices and information systems, which lack automated monitoring capabilities, increase risk, and make remote user access management difficult at best.\n\nRemote access is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nAutomated monitoring of remote access sessions allows organizations to detect cyber attacks and also ensure ongoing compliance with remote access policies by auditing connection activities of remote access capabilities, such as Remote Desktop Protocol (RDP), on a variety of information system components (e.g., servers, workstations, notebook computers, smartphones, and tablets).\n\nMonitoring of remote access can be used to spot attacks such as brute-force authentication attempts and denial-of-service (DoS) attacks.","checkContent":"Verify that AlmaLinux OS 9 monitors all remote access methods, by running the following command:\n\n$ grep -rsE '^(auth|authpriv|daemon)\\.\\*' /etc/rsyslog.conf /etc/rsyslog.d/*.conf\n\n/etc/rsyslog.conf:authpriv.*      /var/log/secure\n\nIf \"auth.*\", \"authpriv.*\" or \"daemon.*\" are not configured to be logged, this is a finding.","fixText":"Add or update the following line to the \"/etc/rsyslog.conf\" file or a .conf file within /etc/rsyslog.d/:\n\nauth.*;authpriv.*;daemon.* /var/log/secure","ccis":["CCI-000067"]},{"vulnId":"V-269113","ruleId":"SV-269113r1184081_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 SSH client must be configured to use only encryption ciphers employing FIPS 140-3-validated cryptographic hash algorithms to protect the confidentiality of SSH client connections.","description":"Without cryptographic integrity protections, information can be altered by unauthorized users without detection.\n\nRemote access (e.g., RDP) is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nCryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions using asymmetric cryptography enabling distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.\n\nAlmaLinux OS 9 incorporates systemwide crypto policies by default. Configuration files in /etc/ssh/ have no effect on the ciphers, MACs, or algorithms used by the operating system. The employed ssh client algorithms can be viewed in the /etc/crypto-policies/back-ends/openssh.config file.","checkContent":"Verify the SSH client is configured to use only ciphers employing FIPS 140-3-approved algorithms with the following command:\n\n$ grep -i Ciphers /etc/crypto-policies/back-ends/openssh.config \n\nCiphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes128-ctr\n\nIf the cipher entries in the \"openssh.config\" file have any ciphers other than \"aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes128-ctr\", they are missing, or commented out, this is a finding.","fixText":"Configure the AlmaLinux OS 9 SSH client to use only ciphers employing FIPS 140-3-approved algorithms.\n\nReinstall crypto-policies with the following command:\n\n$ sudo dnf -y reinstall crypto-policies\n\nSet the crypto-policy to FIPS with the following command:\n\n$ sudo update-crypto-policies --set FIPS\n\nSetting system policy to FIPS","ccis":["CCI-001453"]},{"vulnId":"V-269115","ruleId":"SV-269115r1184083_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 SSH client must be configured to use only Message Authentication Codes (MACs) employing FIPS 140-3-validated cryptographic hash algorithms.","description":"Without cryptographic integrity protections, information can be altered by unauthorized users without detection.\n\nRemote access (e.g. RDP) is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nCryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions using asymmetric cryptography enabling distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.\n\nAlmaLinux OS 9 incorporates systemwide crypto policies by default. The /etc/ssh/ssh_config file has no effect on the ciphers, MACs, or algorithms. The employed algorithms can be viewed in the /etc/crypto-policies/back-ends/openssh.config file.","checkContent":"Verify the SSH client is configured to use only MACs employing FIPS 140-3-approved algorithms.\n\nTo verify the MACs in the systemwide SSH configuration file, use the following command:\n\n$ grep -i MACs /etc/crypto-policies/back-ends/openssh.config\n\nMACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha2-512\n\nIf the MACs entries in the \"openssh.config\" file have any hashes other than \"hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha2-512\", or they are missing or commented out, this is a finding.","fixText":"Configure the SSH client to use only MACs employing FIPS 140-3-approved algorithms.\n\nReinstall crypto-policies with the following command:\n\n$ sudo dnf -y reinstall crypto-policies\n\nSet the crypto-policy to FIPS with the following command:\n\n$ sudo update-crypto-policies --set FIPS\n\nSetting system policy to FIPS","ccis":["CCI-001453"]},{"vulnId":"V-269116","ruleId":"SV-269116r1184084_rule","severity":"high","ruleTitle":"The AlmaLinux 9 SSH server must be configured to use only DOD-approved encryption ciphers employing FIPS 140-3-validated cryptographic hash algorithms to protect the confidentiality of SSH server connections.","description":"Without cryptographic integrity protections, information can be altered by unauthorized users without detection.\n\nRemote access (e.g., RDP) is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nCryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions using asymmetric cryptography enabling distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.","checkContent":"Verify the SSH server is configured to use only ciphers employing FIPS 140-3-approved algorithms.\n\nTo verify the ciphers in the systemwide SSH configuration file, use the following command:\n\n$ sudo grep -i Ciphers /etc/crypto-policies/back-ends/opensshserver.config \nCiphers aes256-gcm@openssh.com,aes256-ctr,aes128-gcm@openssh.com,aes128-ctr\n\nIf the cipher entries in the \"opensshserver.config\" file have any ciphers other than \"aes256-gcm@openssh.com,aes256-ctr,aes128-gcm@openssh.com,aes128-ctr\", or they are missing or commented out, this is a finding.","fixText":"Configure the Alma Linux 9 SSH server to use only ciphers employing FIPS 140-3-approved algorithms.\n\nReinstall crypto-policies with the following command:\n\n$ sudo dnf -y reinstall crypto-policies\n\nSet the crypto-policy to FIPS with the following command:\n\n$ sudo update-crypto-policies --set FIPS\n\nSetting system policy to FIPS","ccis":["CCI-001453"]},{"vulnId":"V-269118","ruleId":"SV-269118r1050609_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must implement DOD-approved systemwide cryptographic policies to protect the confidentiality of SSH server connections.","description":"Without cryptographic integrity protections, information can be altered by unauthorized users without detection.\n\nRemote access (e.g., RDP) is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nCryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions using asymmetric cryptography enabling distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.","checkContent":"Verify that systemwide crypto policies are in effect with the following command:\n\n$ sudo /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*include'\n\n/etc/ssh/sshd_config:Include /etc/ssh/sshd_config.d/*.conf\n/etc/ssh/sshd_config.d/50-redhat.conf:Include /etc/crypto-policies/back-ends/opensshserver.config\n\nIf \"Include /etc/ssh/sshd_config.d/*.conf\" or \"Include /etc/crypto-policies/back-ends/opensshserver.config\" are not included in the system sshd config or the file /etc/ssh/sshd_config.d/50-redhat.conf is missing, this is a finding.","fixText":"Configure the AlmaLinux OS 9 SSH daemon to use systemwide crypto policies by running the following commands:\n\n$ sudo dnf reinstall openssh-server","ccis":["CCI-001453"]},{"vulnId":"V-269119","ruleId":"SV-269119r1184085_rule","severity":"high","ruleTitle":"The AlmaLinux OS 9 SSH server must be configured to use only Message Authentication Codes (MACs) employing FIPS 140-3-validated cryptographic hash algorithms to protect the confidentiality of SSH server connections.","description":"Without cryptographic integrity protections, information can be altered by unauthorized users without detection.\n\nRemote access (e.g., RDP) is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nCryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions using asymmetric cryptography enabling distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.\n\nAlmaLinux OS 9 incorporates systemwide crypto policies by default. The SSH configuration file has no effect on the ciphers, MACs, or algorithms employed on the server. The employed algorithms can be viewed in the /etc/crypto-policies/back-ends/opensshserver.config file.","checkContent":"Verify the SSH server is configured to use only MACs employing FIPS 140-3-approved algorithms.\n\nTo verify the MACs in the systemwide SSH configuration file, use the following command:\n\n$ sudo grep -i MACs /etc/crypto-policies/back-ends/opensshserver.config\n\nMACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha2-512\n\nIf the MACs entries in the \"opensshserver.config\" file have any hashes other than \"hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha2-512\", or they are missing or commented out, this is a finding.","fixText":"Configure the AlmaLinux OS 9 SSH server to use only MACs employing FIPS 140-3-approved algorithms.\n\nReinstall crypto-policies with the following command:\n\n$ sudo dnf -y reinstall crypto-policies\n\nSet the crypto-policy to FIPS with the following command:\n\n$ sudo update-crypto-policies --set FIPS\n\nSetting system policy to FIPS","ccis":["CCI-001453"]},{"vulnId":"V-269120","ruleId":"SV-269120r1050610_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must force a frequent session key renegotiation for SSH connections to the server.","description":"Without confidentiality protection mechanisms, unauthorized individuals may gain access to sensitive information via a remote access session.\n\nRemote access is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nEncryption provides a means to secure the remote connection to prevent unauthorized access to the data traversing the remote access connection (e.g., RDP), thereby providing a degree of confidentiality. The encryption strength of a mechanism is selected based on the security categorization of the information.\n\nSession key regeneration limits the chances of a session key becoming compromised.","checkContent":"Verify the SSH server is configured to force frequent session key renegotiation with the following command:\n\n$ sshd -T | grep rekeylimit\n\nrekeylimit 1073741824 3600\n\nIf \"RekeyLimit\" does not have a maximum data amount and maximum time defined, this is a finding.","fixText":"Configure AlmaLinux OS 9 to force a frequent session key renegotiation for SSH connections to the server by running the following command:\n\n$ echo \"RekeyLimit 1G 1h\" > /etc/ssh/sshd_config.d/40-rekeylimit.conf","ccis":["CCI-000068"]},{"vulnId":"V-269122","ruleId":"SV-269122r1184087_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 IP tunnels must use FIPS 140-3 approved cryptographic algorithms.","description":"Overriding the system crypto policy makes the behavior of the Libreswan service violate expectations and makes the system configuration more fragmented.","checkContent":"Note: If the Libreswan package is not installed, this requirement is Not Applicable.\n\nVerify that the IPsec service uses the system crypto policy with the following command:\n\n$ grep -rE '^include ' /etc/ipsec.conf /etc/ipsec.d/\n\n/etc/ipsec.conf:include /etc/crypto-policies/back-ends/libreswan.config\n/etc/ipsec.conf:include /etc/ipsec.d/*.conf\n\nIf the IPsec configuration file does not contain \"include /etc/crypto-policies/back-ends/libreswan.config\", this is a finding.","fixText":"Configure Libreswan to use the systemwide cryptographic policy.\n\nAdd the following line to \"/etc/ipsec.conf\":\n\ninclude /etc/crypto-policies/back-ends/libreswan.config","ccis":["CCI-000068"]},{"vulnId":"V-269125","ruleId":"SV-269125r1107616_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must use the TuxCare ESU repository.","description":"FIPS 140-3-validated packages are available from TuxCare.\n\nThe TuxCare repositories provide the packages and updates not found in the community repositories.\n\nSatisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000125-GPOS-00065, SRG-OS-000396-GPOS-00176, SRG-OS-000478-GPOS-00223","checkContent":"Verify that AlmaLinux OS 9 is using the TuxCare ESU repositories with the following command:\n\n$ dnf repolist | grep tuxcare\ntuxcare-base         TuxCare Enterprise Support for AlmaLinux 9.2 - Base\ntuxcare-esu          TuxCare Enterprise Support for AlmaLinux 9.2 - ESU\ntuxcare-radar        TuxCare Radar\n\nIf the tuxcare-esu repository is not enabled, this is a finding.","fixText":"FIPS-validated packages are available from TuxCare as part of the Enterprise Support for AlmaLinux product line. Access the packages by purchasing an ESU license key.\n\nConfigure the operating system to implement FIPS mode with the following commands (replace 9.2 with 9.6 if using that version of ESU):\n\n$ dnf -y install https://repo.tuxcare.com/tuxcare/tuxcare-release-latest-9.2.noarch.rpm\n$ tuxctl --license-key ESU-XXXXXXXXXXXXXXXXXXX\n$ dnf -y upgrade\n$ fips-mode-setup --enable\n$ reboot","ccis":["CCI-000068","CCI-000877","CCI-002450"]},{"vulnId":"V-269126","ruleId":"SV-269126r1107617_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must use the TuxCare FIPS packages and not the default encryption packages.","description":"FIPS 140-3-validated packages are available from TuxCare here: https://tuxcare.com/fips-for-almalinux/\n\nThe original community packages must be replaced with the versions that have gone through the CMVP.\n\nSatisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000478-GPOS-00223, SRG-OS-000396-GPOS-00176, SRG-OS-000125-GPOS-00065","checkContent":"Verify that AlmaLinux OS 9 is using the TuxCare FIPS packages with the following command:\n\n$ rpm -qa | grep -E '^(gnutls|nettle|nss|openssl|libgcrypt|kernel)-[0-9]+' | grep -v tuxcare\n\nIf the command returns anything, this is a finding.","fixText":"Ensure FIPS-validated packages are in use instead of OS defaults using the following commands:\n\n$ dnf -y upgrade\n$ reboot\n\nAfter rebooting into a FIPS kernel, remove the OS default kernel packages, using for example:\n\n$ dnf remove kernel-5.14.0-284.11.1.el9_2.x86_64 kernel-5.14.0-284.30.1.el9_2.x86_64\n$ dnf autoremove","ccis":["CCI-000068","CCI-002450","CCI-000877"]},{"vulnId":"V-269127","ruleId":"SV-269127r1155256_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must enable FIPS mode.","description":"Without confidentiality protection mechanisms, unauthorized individuals may gain access to sensitive information via a remote access session.\n\nRemote access is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nEncryption provides a means to secure the remote connection to prevent unauthorized access to the data traversing the remote access connection (e.g., RDP), thereby providing a degree of confidentiality. The encryption strength of a mechanism is selected based on the security categorization of the information.\n\nThe operating system must use cryptographic modules that have been validated by NIST's FIPS 140-3 program. Using weak or untested cryptography could compromise the confidentiality and integrity of data at rest and in transit.\n\nSatisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000478-GPOS-00223, SRG-OS-000396-GPOS-00176, SRG-OS-000125-GPOS-00065","checkContent":"Verify that AlmaLinux OS 9 is in FIPS mode with the following command:\n\n$ fips-mode-setup --check\n\nFIPS mode is enabled.\n\nIf FIPS mode is not enabled, this is a finding.","fixText":"FIPS-validated packages are available from TuxCare as part of the Enterprise Support for AlmaLinux product line. An ESU license key must be purchased.\n\nConfigure the operating system to implement FIPS mode with the following commands (replace 9.2 with 9.6 if using that version of ESU):\n\n$ dnf install -y https://repo.tuxcare.com/tuxcare/tuxcare-release-latest-9.2.noarch.rpm\n$ tuxctl --license-key ESU-XXXXXXXXXXXXXXXXXXX\n$ dnf -y upgrade\n$ fips-mode-setup --enable\n$ reboot","ccis":["CCI-000068","CCI-002450","CCI-000877"]},{"vulnId":"V-269128","ruleId":"SV-269128r1050010_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must automatically expire temporary accounts within 72 hours.","description":"Temporary accounts are accounts created during a time of need when prompt action requires bypassing the normal account creation authorization process – such as during incident response.\n\nIf these temporary accounts are left enabled (and may have elevated permissions via sudo, group membership or SSH keys) and are not automatically expired or manually removed, the security posture of the system will be degraded and left vulnerable to insider threat.\n\nTemporary accounts are not the same as \"last resort\" or \"break glass\" emergency accounts which are local system accounts to be used by and maintained by authorized system administrators when standard remote access/authentication is unavailable. Emergency accounts are not subject to removal or expiration requirements.\n\nSatisfies: SRG-OS-000002-GPOS-00002, SRG-OS-000123-GPOS-00064","checkContent":"Verify temporary accounts have been provisioned with an expiration date of 72 hours.\n\nFor every existing temporary account, run the following command to obtain its account expiration information:\n\n$ chage -l <account name> | grep -i \"account expires\"\n\nVerify each of these accounts has an expiration date set within 72 hours.\n\nIf any temporary accounts have an expiration date set to \"never\" or do not expire within 72 hours, this is a finding.","fixText":"Configure automatic account expiration after 72 hours by running the following command for each temporary account:\n\n$ chage -E $(date -d +3days +%Y-%m-%d) <account_name>","ccis":["CCI-000016","CCI-001682"]},{"vulnId":"V-269129","ruleId":"SV-269129r1050011_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/sudoers.","description":"Audit records provide a means to investigate events related to a security incident. Insufficient audit coverage will make identifying those responsible challenging or impossible.\n\nThis auditd policy will watch for and alert the system administrators regarding any modifications to the \"/etc/sudoers\" file such as adding privileged users, groups, or commands.\n\nSatisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000304-GPOS-00121, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000470-GPOS-00214, SRG-OS-000471-GPOS-00215, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221, SRG-OS-000755-GPOS-00220","checkContent":"Verify AlmaLinux OS 9 generates audit records for all account creations, modifications, disabling, and termination events that affect the \"/etc/sudoers\" file, with the following command: \n \n$ grep /etc/sudoers /etc/audit/audit.rules \n \n-w /etc/sudoers -p wa -k identity \n \nIf the command does not return a line or the line is commented out, this is a finding.\n\nNote: The \"-k\" allows for specifying an arbitrary identifier, and the string after it does not need to match the example output above.","fixText":"Configure AlmaLinux OS 9 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/sudoers.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-w /etc/sudoers -p wa -k identity\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load\n\nReboot the server so the changes to take effect.","ccis":["CCI-000018","CCI-000130","CCI-000135","CCI-000169","CCI-000015","CCI-002884","CCI-000172","CCI-001403","CCI-001404","CCI-001405","CCI-002130","CCI-004188"]},{"vulnId":"V-269130","ruleId":"SV-269130r1050012_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/group.","description":"Audit records provide a means to investigate events related to a security incident. Insufficient audit coverage will make identifying those responsible challenging or impossible.\n\nThis auditd policy will watch for and alert the system administrators regarding any modifications to the \"/etc/group\" file such as adding/removing/disabling groups.\n\nSatisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000304-GPOS-00121, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000470-GPOS-00214, SRG-OS-000471-GPOS-00215, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221","checkContent":"Verify AlmaLinux OS 9 generates audit records for all account creations, modifications, disabling, and termination events that affect the \"/etc/group\" file, with the following command: \n \n$ grep /etc/group /etc/audit/audit.rules \n \n-w /etc/group -p wa -k identity \n \nIf the command does not return a line or the line is commented out, this is a finding.\n \nNote: The \"-k\" allows for specifying an arbitrary identifier, and the string after it does not need to match the example output above.","fixText":"Configure AlmaLinux OS 9 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/group\".\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-w /etc/group -p wa -k identity\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load\n\nReboot the server so the changes to take effect.","ccis":["CCI-000018","CCI-000130","CCI-000135","CCI-000169","CCI-000015","CCI-002884","CCI-000172","CCI-001403","CCI-001404","CCI-001405","CCI-002130"]},{"vulnId":"V-269131","ruleId":"SV-269131r1050013_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/gshadow.","description":"Audit records provide a means to investigate events related to a security incident. Insufficient audit coverage will make identifying those responsible challenging or impossible.\n\nThis auditd policy will watch for and alert the system administrators regarding any modifications to the \"/etc/gshadow\" file such as adding/removing/disabling users.\n\nSatisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000304-GPOS-00121, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000470-GPOS-00214, SRG-OS-000471-GPOS-00215, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221","checkContent":"Verify AlmaLinux OS 9 generates audit records for all account creations, modifications, disabling, and termination events that affect the \"/etc/gshadow\" file, with the following command: \n \n$ grep /etc/gshadow /etc/audit/audit.rules \n \n-w /etc/gshadow -p wa -k identity \n \nIf the command does not return a line or the line is commented out, this is a finding.\n \nNote: The \"-k\" allows for specifying an arbitrary identifier, and the string after it does not need to match the example output above.","fixText":"Configure AlmaLinux OS 9 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/gshadow\".\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-w /etc/gshadow -p wa -k identity\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load\n\nReboot the server so the changes to take effect.","ccis":["CCI-000018","CCI-000130","CCI-000135","CCI-000169","CCI-000015","CCI-002884","CCI-000172","CCI-001403","CCI-001404","CCI-001405","CCI-002130"]},{"vulnId":"V-269132","ruleId":"SV-269132r1050014_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/security/opasswd.","description":"Audit records provide a means to investigate events related to a security incident. Insufficient audit coverage will make identifying those responsible challenging or impossible.\n\nThis auditd policy will watch for and alert the system administrators regarding any modifications to the \"/etc/security/opasswd\" file such as adding/removing/disabling users.\n\nSatisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000304-GPOS-00121, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000470-GPOS-00214, SRG-OS-000471-GPOS-00215, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221","checkContent":"Verify AlmaLinux OS 9 generates audit records for all account creations, modifications, disabling, and termination events that affect the \"/etc/security/opasswd\" file, with the following command: \n \n$ grep /etc/security/opasswd /etc/audit/audit.rules \n \n-w /etc/security/opasswd -p wa -k identity \n \nIf the command does not return a line or the line is commented out, this is a finding.\n \nNote: The \"-k\" allows for specifying an arbitrary identifier, and the string after it does not need to match the example output above.","fixText":"Configure AlmaLinux OS 9 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/security/opasswd\".\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-w /etc/security/opasswd -p wa -k identity\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load\n\nReboot the server so the changes to take effect.","ccis":["CCI-000018","CCI-000130","CCI-000135","CCI-000169","CCI-000015","CCI-002884","CCI-000172","CCI-001403","CCI-001404","CCI-001405","CCI-002130"]},{"vulnId":"V-269133","ruleId":"SV-269133r1050015_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/passwd.","description":"Audit records provide a means to investigate events related to a security incident. Insufficient audit coverage will make identifying those responsible challenging or impossible.\n\nThis auditd policy will watch for and alert the system administrators regarding any modifications to the \"/etc/passwd\" file such as adding/removing/disabling users.\n\nSatisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000304-GPOS-00121, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000470-GPOS-00214, SRG-OS-000471-GPOS-00215, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221, SRG-OS-000274-GPOS-00104, SRG-OS-000275-GPOS-00105, SRG-OS-000276-GPOS-00106, SRG-OS-000277-GPOS-00107","checkContent":"Verify AlmaLinux OS 9 generates audit records for all account creations, modifications, disabling, and termination events that affect the \"/etc/passwd\" file, with the following command: \n \n$ grep /etc/passwd /etc/audit/audit.rules \n \n-w /etc/passwd -p wa -k identity \n \nIf the command does not return a line or the line is commented out, this is a finding.\n \nNote: The \"-k\" allows for specifying an arbitrary identifier, and the string after it does not need to match the example output above.","fixText":"Configure AlmaLinux OS 9 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/passwd\".\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-w /etc/passwd -p wa -k identity\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load\n\nReboot the server so the changes to take effect.","ccis":["CCI-000018","CCI-000130","CCI-000135","CCI-000169","CCI-000015","CCI-002884","CCI-000172","CCI-001403","CCI-001404","CCI-001405","CCI-002130"]},{"vulnId":"V-269134","ruleId":"SV-269134r1050016_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/shadow.","description":"Audit records provide a means to investigate events related to a security incident. Insufficient audit coverage will make identifying those responsible challenging or impossible.\n\nThis auditd policy will watch for and alert the system administrators regarding any modifications to the \"/etc/shadow\" file such as adding/removing/disabling users.\n\nSatisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000304-GPOS-00121, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000470-GPOS-00214, SRG-OS-000471-GPOS-00215, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221","checkContent":"Verify AlmaLinux OS 9 generates audit records for all account creations, modifications, disabling, and termination events that affect the \"/etc/shadow\" file, with the following command: \n \n$ grep /etc/shadow /etc/audit/audit.rules \n \n-w /etc/shadow -p wa -k identity \n \nIf the command does not return a line or the line is commented out, this is a finding.\n \nNote: The \"-k\" allows for specifying an arbitrary identifier, and the string after it does not need to match the example output above.","fixText":"Configure AlmaLinux OS 9 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/shadow\" using the following command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-w /etc/shadow -p wa -k identity\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load\n\nReboot the server so the changes to take effect.","ccis":["CCI-000018","CCI-000130","CCI-000135","CCI-000169","CCI-000015","CCI-002884","CCI-000172","CCI-001403","CCI-001404","CCI-001405","CCI-002130"]},{"vulnId":"V-269135","ruleId":"SV-269135r1050017_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect the files within /etc/sudoers.d/","description":"Audit records provide a means to investigate events related to a security incident. Insufficient audit coverage will make identifying those responsible challenging or impossible.\n\nThis auditd policy will watch for and alert the system administrators regarding any modifications to the files within \"/etc/sudoers.d/\" such as adding privileged users, groups, or commands.\n\nSatisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000304-GPOS-00121, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000470-GPOS-00214, SRG-OS-000471-GPOS-00215, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221","checkContent":"Verify AlmaLinux OS 9 generates audit records for all account creations, modifications, disabling, and termination events that affect the files within \"/etc/sudoers.d/\", with the following command: \n \n$ grep /etc/sudoers.d/ /etc/audit/audit.rules \n \n-w /etc/sudoers.d/ -p wa -k identity \n \nIf the command does not return a line or the line is commented out, this is a finding.\n \nNote: The \"-k\" allows for specifying an arbitrary identifier, and the string after it does not need to match the example output above.","fixText":"Configure AlmaLinux OS 9 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/etc/sudoers.d/.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-w /etc/sudoers.d/ -p wa -k identity\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load\n\nReboot the server so the changes to take effect.","ccis":["CCI-000018","CCI-000130","CCI-000135","CCI-000169","CCI-000015","CCI-002884","CCI-000172","CCI-001403","CCI-001404","CCI-001405","CCI-002130"]},{"vulnId":"V-269136","ruleId":"SV-269136r1137691_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must require authentication to access emergency mode.","description":"This requirement prevents attackers with physical access from easily bypassing security on the machine and gaining root access.\n\nSuch accesses are further prevented by configuring the bootloader password.","checkContent":"Verify that AlmaLinux OS 9 requires authentication for emergency mode with the following command:\n\n$ grep -E 'ExecStart.*sulogin' /usr/lib/systemd/system/emergency.service \n\nExecStart=-/usr/lib/systemd/systemd-sulogin-shell emergency\n\nIf this line is not returned, or is commented out, this is a finding.\nIf the output is different, this is a finding.","fixText":"Configure AlmaLinux OS 9 to require authentication for emergency mode.\n\nAdd or modify the following line in the \"/usr/lib/systemd/system/emergency.service\" file:\n\nExecStart=-/usr/lib/systemd/systemd-sulogin-shell emergency\n\n\"sudo systemctl edit emergency.service\" can also be used to create a \"/etc/systemd/system/emergency.service.d/override.conf\" file.","ccis":["CCI-000213"]},{"vulnId":"V-269137","ruleId":"SV-269137r1137691_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must require a boot loader password.","description":"Password protection on the boot loader configuration ensures users with physical access cannot trivially alter important bootloader settings. These include which kernel to use, and whether to enter single-user mode.","checkContent":"Verify the boot loader superuser password is required using the following command:\n\n$ grep password /etc/grub2.cfg \n\npassword_pbkdf2  superman   ${GRUB2_PASSWORD}  \n\nVerify the boot loader superuser password has been set and the password is encrypted using the following command:\n\n$ cat /boot/grub2/user.cfg\n\nGRUB2_PASSWORD=grub.pbkdf2.sha512.10000.5766DCE424DCD4F0A2F5AC774C044BE8B904BC\nF0022B671CD5E522A3568C599F327EBA3F3F5AB30D69A9B9A4FD172B12435BC10BE0A9B40669FB\nA5C5ECBE8D1B.EAC815AE6F8A3F79F800D2EC7F454933BC3D63282532AAB1C487CA25331DD359F\n5BF61166EDB53FB33977E982A9F20327D988DA15CBF7E4238357E65C5AEAF3C\n\nIf a \"GRUB2_PASSWORD\" is not set, this is a finding.","fixText":"Configure AlmaLinux OS 9 to require a grub bootloader password for the grub superuser account.\n\nGenerate an encrypted grub2 password for the grub superuser account with the following command:\n\n$ grub2-setpassword\nEnter password:\nConfirm password:","ccis":["CCI-000213"]},{"vulnId":"V-269138","ruleId":"SV-269138r1137691_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must require a unique superuser's name upon booting into single-user and maintenance modes.","description":"Having a nondefault grub superuser username makes password-guessing attacks less effective.","checkContent":"Verify the boot loader superuser account has been set with the following command:\n\n$ grep -A1 \"superusers\" /etc/grub2.cfg \n\nset superusers=\"superman\"\nexport superusers\npassword_pbkdf2 superman ${GRUB2_PASSWORD}\n\nIn this example \"superman\" is the actual account name, changed from the default \"root\".\n\nIf superusers contains easily guessable usernames, this is a finding.","fixText":"Configure AlmaLinux OS 9 to have a unique username for the grub superuser account using the following commands:\n\n$ sed -ri 's/root/superman/' /etc/grub.d/01_users\n\n$ grub2-mkconfig -o /boot/grub2/grub.cfg","ccis":["CCI-000213"]},{"vulnId":"V-269139","ruleId":"SV-269139r1137691_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must require authentication to access single-user mode.","description":"This requirement prevents attackers with physical access from easily bypassing security on the machine and gaining root access. \n\nSuch accesses are further prevented by configuring the bootloader password.","checkContent":"Verify that AlmaLinux OS 9 requires authentication for single-user mode with the following command:\n\n$ grep -E 'ExecStart.*sulogin' /usr/lib/systemd/system/rescue.service \n\nExecStart=-/usr/lib/systemd/systemd-sulogin-shell rescue\n\nIf this line is not returned or is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to require authentication for single-user mode.\n\nAdd or modify the following line in the \"/usr/lib/systemd/system/rescue.service\" file:\n\nExecStart=-/usr/lib/systemd/systemd-sulogin-shell rescue\n\n\"sudo systemctl edit rescue.service\" can also be used to create a \"/etc/systemd/system/rescue.service.d/override.conf\" file.","ccis":["CCI-000213"]},{"vulnId":"V-269140","ruleId":"SV-269140r1050022_rule","severity":"high","ruleTitle":"The systemd Ctrl-Alt-Delete burst key sequence in AlmaLinux OS 9 must be disabled.","description":"A locally logged-on user who presses Ctrl-Alt-Delete in quick succession when at the console can reboot the system.\n\nIf accidentally pressed, as could happen in the case of a mixed OS environment, this can create the risk of short-term loss of availability of systems due to unintentional reboot.\n\nIn a graphical user environment, risk of unintentional reboot from the Ctrl-Alt-Delete sequence is reduced because the user will be prompted before any action is taken.","checkContent":"Verify AlmaLinux OS 9 is configured to not reboot the system when Ctrl-Alt-Delete is pressed seven times within two seconds with the following command:\n\n$ systemd-analyze cat-config systemd/system.conf | grep -v '#' | grep CtrlAltDel\n\nCtrlAltDelBurstAction=none\n\nIf \"CtrlAltDelBurstAction\" is not set to \"none\", is commented out, or is missing, this is a finding.","fixText":"Configure the system to disable the CtrlAltDelBurstAction by added or modifying the following line in the \"/etc/systemd/system.conf\" configuration file:\n\nCtrlAltDelBurstAction=none\n\nReload the daemon for this change to take effect.\n\n$ systemctl daemon-reexec","ccis":["CCI-002235"]},{"vulnId":"V-269141","ruleId":"SV-269141r1101851_rule","severity":"high","ruleTitle":"The Ctrl-Alt-Delete key sequence must be disabled on AlmaLinux OS 9.","description":"A locally logged-on user who presses Ctrl-Alt-Delete when at the console can reboot the system.\n\nIf accidentally pressed, as could happen in the case of a mixed OS environment, this can create the risk of short-term loss of availability of systems due to unintentional reboot.\n\nIn a graphical user environment, risk of unintentional reboot from the Ctrl-Alt-Delete sequence is reduced because the user will be prompted before any action is taken.","checkContent":"Verify AlmaLinux OS 9 is not configured to reboot the system when Ctrl-Alt-Delete is pressed with the following command:\n\n$ systemctl status ctrl-alt-del.target\n\nctrl-alt-del.target\n     Loaded: masked (Reason: Unit ctrl-alt-del.target is masked.)\n     Active: inactive (dead)\n\nIf the \"ctrl-alt-del.target\" is loaded and not masked, this is a finding.","fixText":"Configure AlmaLinux OS 9 to disable the ctrl-alt-del.target with the following command:\n\n$ systemctl disable --now ctrl-alt-del.target\n$ systemctl mask --now ctrl-alt-del.target","ccis":["CCI-002235"]},{"vulnId":"V-269142","ruleId":"SV-269142r1050024_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the sudo package installed.","description":"\"sudo\" is a program designed to allow a system administrator to give limited root privileges to users and log root activity. \n\nThe basic philosophy is to give as few privileges as possible but still allow system users to complete their work.","checkContent":"Verify that the AlmaLinux OS 9 sudo package is installed with the following command:\n\n$ dnf list --installed sudo\n\nInstalled Packages\nsudo.x86_64                 1.9.5p2-9.el9                      @anaconda\n\nIf the \"sudo\" package is not installed, this is a finding.","fixText":"The sudo package can be installed with the following command:\n \n$ dnf install sudo","ccis":["CCI-002235"]},{"vulnId":"V-269143","ruleId":"SV-269143r1050025_rule","severity":"medium","ruleTitle":"The AlmaLinux OS 9 debug-shell systemd service must be disabled.","description":"The debug-shell requires no authentication and provides root privileges to anyone who has physical access to the machine.\n\nWhile this feature is disabled by default, masking it adds an additional layer of assurance that it will not be enabled via a dependency in systemd. \n\nThis also prevents attackers with physical access from easily bypassing security on the machine through valid troubleshooting configurations and gaining root access when the system is rebooted.","checkContent":"Verify AlmaLinux OS 9 is configured to mask the debug-shell systemd service with the following command:\n\n$ systemctl status debug-shell.service\n\ndebug-shell.service\nLoaded: masked (Reason: Unit debug-shell.service is masked.)\nActive: inactive (dead)\n\nIf the \"debug-shell.service\" is loaded and not masked, this is a finding.","fixText":"Configure AlmaLinux OS 9 to mask the debug-shell systemd service with the following command:\n\n$ systemctl mask --now debug-shell.service","ccis":["CCI-002235"]},{"vulnId":"V-269144","ruleId":"SV-269144r1050026_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enable kernel parameters to enforce discretionary access control on hardlinks.","description":"By enabling the fs.protected_hardlinks kernel parameter, users can no longer create soft or hard links to files they do not own.\n\nDisallowing such hardlinks mitigates vulnerabilities based on unsecure file systems accessed by privileged programs, avoiding an exploitation vector exploiting unsafe use of open() or creat().","checkContent":"Verify AlmaLinux OS 9 is configured to enable DAC on hardlinks with the following command:\n\n$ sysctl fs.protected_hardlinks\n\nfs.protected_hardlinks = 1\n\nIf \"fs.protected_hardlinks\" is not set to \"1\" or is missing, this is a finding.\n\nCheck that the configuration files are present to enable this kernel parameter:\n\n$ /usr/lib/systemd/systemd-sysctl --cat-config | egrep -v '^(#|;)' |  grep -F fs.protected_hardlinks | tail -1\n\nfs.protected_hardlinks = 1\n\nIf \"fs.protected_hardlinks\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enable DAC on hardlinks with the following command:\n\n$ echo \"fs.protected_hardlinks = 1\" > /etc/sysctl.d/60-hardlinks.conf\n\nLoad settings from all system configuration files with the following command:\n\n$ sysctl –system","ccis":["CCI-002235"]},{"vulnId":"V-269145","ruleId":"SV-269145r1050027_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enable kernel parameters to enforce discretionary access control (DAC) on symlinks.","description":"By enabling the fs.protected_symlinks kernel parameter, symbolic links are permitted to be followed only when outside a sticky world-writable directory, or when the user identifier (UID) of the link and follower match, or when the directory owner matches the symlink's owner. \n\nDisallowing such symlinks helps mitigate vulnerabilities based on unsecure file systems accessed by privileged programs, avoiding an exploitation vector exploiting unsafe use of open() or creat().","checkContent":"Verify AlmaLinux OS 9 is configured to enable DAC on symlinks with the following command:\n\n$ sysctl fs.protected_symlinks\n\nfs.protected_symlinks = 1\n\nIf \"fs.protected_symlinks \" is not set to \"1\" or is missing, this is a finding.\n\nCheck that the configuration files are present to enable this kernel parameter:\n\n$ /usr/lib/systemd/systemd-sysctl --cat-config | egrep -v '^(#|;)' | grep -F fs.protected_symlinks | tail -1\n\nfs.protected_symlinks = 1\n\nIf \"fs.protected_symlinks\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enable DAC on symlinks with the following command:\n\n$ echo \"fs.protected_symlinks = 1\" > /etc/sysctl.d/60-symlinks.conf\n\nLoad settings from all system configuration files with the following command:\n\n$ sysctl --system","ccis":["CCI-002235"]},{"vulnId":"V-269146","ruleId":"SV-269146r1050028_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must audit uses of the \"execve\" system call.","description":"Misuse of privileged functions, either intentionally or unintentionally by authorized users, or by unauthorized external entities that have compromised information system accounts, is a serious and ongoing concern and can have significant adverse impacts on organizations. Auditing the use of privileged functions is one way to detect such misuse and identify the risk from insider threats and the advanced persistent threat.\n\nSatisfies: SRG-OS-000327-GPOS-00127, SRG-OS-000326-GPOS-00126","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"execve\" system call with the following command:\n\n$ auditctl -l | grep execve\n\n-a always,exit -F arch=b32 -S execve -C uid!=euid -F euid=0 -F key=execpriv\n-a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -F key=execpriv\n-a always,exit -F arch=b32 -S execve -C gid!=egid -F egid=0 -F key=execpriv\n-a always,exit -F arch=b64 -S execve -C gid!=egid -F egid=0 -F key=execpriv\n\nIf the command does not return all lines, or the lines are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"sudo\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F arch=b32 -S execve -C uid!=euid -F euid=0 -k execpriv\n-a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -k execpriv\n-a always,exit -F arch=b32 -S execve -C gid!=egid -F egid=0 -k execpriv\n-a always,exit -F arch=b64 -S execve -C gid!=egid -F egid=0 -k execpriv\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-002234","CCI-002233"]},{"vulnId":"V-269147","ruleId":"SV-269147r1050029_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must automatically lock an account when three unsuccessful logon attempts occur.","description":"By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-force attacks, is reduced. Limits are imposed by locking the account.","checkContent":"Verify AlmaLinux OS 9 is configured to lock an account after three unsuccessful logon attempts with the command:\n\n$ grep deny /etc/security/faillock.conf\n\ndeny = 3\n\nIf the \"deny\" option is not set to 3 or less (but not 0), is missing or commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to lock an account when three unsuccessful logon attempts occur using pam_faillock.\n\nFirst, enable the feature using the following command:\n\n$ authselect enable-feature with-faillock\n\nThen, add or update the following line in the \"/etc/security/faillock.conf\" file:\n\ndeny = 3","ccis":["CCI-000044"]},{"vulnId":"V-269148","ruleId":"SV-269148r1050030_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must automatically lock the root account until the root account is released by an administrator when three unsuccessful logon attempts occur during a 15-minute time period.","description":"By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-force attacks, is reduced. Limits are imposed by locking the account.","checkContent":"Verify AlmaLinux OS 9 is configured to lock the root account after three unsuccessful logon attempts with the command:\n\n$ grep even_deny_root /etc/security/faillock.conf\n\neven_deny_root\n\nIf the \"even_deny_root\" option is not set, is missing, or is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to lock the root account after a number of incorrect login attempts using pam_faillock.\n\nFirst, enable the feature using the following command:\n\n$ authselect enable-feature with-faillock\n\nThen, add or uncomment the following line in the \"/etc/security/faillock.conf\" file:\n\neven_deny_root","ccis":["CCI-000044"]},{"vulnId":"V-269149","ruleId":"SV-269149r1184091_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must automatically lock an account when three unsuccessful logon attempts occur during a 15-minute time period.","description":"By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-force attacks, is reduced. Limits are imposed by locking the account.","checkContent":"Verify AlmaLinux OS 9 locks an account after three unsuccessful logon attempts within a period of 15 minutes with the following command:\n\n$ grep fail_interval /etc/security/faillock.conf\n\nfail_interval = 900\n\nIf the \"fail_interval\" option is not set to 900 or less (but not 0), the line is commented out, or the line is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to lock an account after a number of incorrect login attempts within 15 minutes using pam_faillock.\n\nFirst, enable the feature using the following command:\n\n$ authselect enable-feature with-faillock\n\nThen, add or uncomment the following line in the \"/etc/security/faillock.conf\" file:\n\nfail_interval = 900","ccis":["CCI-000044"]},{"vulnId":"V-269150","ruleId":"SV-269150r1050032_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must configure the use of the pam_faillock.so module in the /etc/pam.d/system-auth file.","description":"By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-force attacks, is reduced. Limits are imposed by locking the account.\n\nIf the pam_faillock.so module is not loaded, the system will not correctly lockout accounts to prevent password guessing attacks.","checkContent":"Verify the pam_faillock.so module is present in the \"/etc/pam.d/system-auth\" file:\n\n$ grep pam_faillock.so /etc/pam.d/system-auth\n\nauth     required  pam_faillock.so preauth\nauth     required  pam_faillock.so authfail\naccount  required  pam_faillock.so\n\nIf the pam_faillock.so module is not present in the \"/etc/pam.d/system-auth\" file with the \"preauth\" line listed before pam_unix.so, this is a finding.\n\nIf the system administrator (SA) can demonstrate that the required configuration is contained in a PAM configuration file included or substacked from the system-auth file, this is not a finding.","fixText":"Configure AlmaLinux OS 9 to include the use of the pam_faillock.so module in the /etc/pam.d/system-auth file.\n\nAdd/modify the appropriate sections of the \"/etc/pam.d/system-auth\" file to match the following lines, ensuring that the \"preauth\" line is listed before pam_unix.so.\n\nauth     required  pam_faillock.so preauth\nauth     required  pam_faillock.so authfail\naccount  required  pam_faillock.so\n\nNote: Do not simply copy these three lines into the file; their location/order is important.","ccis":["CCI-000044"]},{"vulnId":"V-269151","ruleId":"SV-269151r1050033_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must configure the use of the pam_faillock.so module in the /etc/pam.d/password-auth file.","description":"By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-force attacks, is reduced. Limits are imposed by locking the account.\n\nIf the pam_faillock.so module is not loaded, the system will not correctly lockout accounts to prevent password guessing attacks.","checkContent":"Verify the pam_faillock.so module is present in the \"/etc/pam.d/password-auth\" file:\n\n$ grep pam_faillock.so /etc/pam.d/password-auth\n\nauth     required  pam_faillock.so preauth\nauth     required  pam_faillock.so authfail\naccount  required  pam_faillock.so\n\nIf the pam_faillock.so module is not present in the \"/etc/pam.d/password-auth\" file with the \"preauth\" line listed before pam_unix.so, this is a finding.\n\nIf the system administrator (SA) can demonstrate that the required configuration is contained in a PAM configuration file included or substacked from the system-auth file, this is not a finding.","fixText":"Configure AlmaLinux OS 9 to include the use of the pam_faillock.so module in the /etc/pam.d/password-auth file.\n\nAdd/modify the appropriate sections of the \"/etc/pam.d/password-auth\" file to match the following lines, ensuring that the \"preauth\" line is listed before pam_unix.so.\n\nauth     required  pam_faillock.so preauth\nauth     required  pam_faillock.so authfail\naccount  required  pam_faillock.so\n\nNote: Do not simply copy these three lines into the file; their location/order is important.","ccis":["CCI-000044"]},{"vulnId":"V-269152","ruleId":"SV-269152r1050034_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must log username information when unsuccessful logon attempts occur.","description":"Without auditing of these events, it may be harder or impossible to identify what an attacker did after an attack.\n\nSatisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000470-GPOS-00214","checkContent":"Verify the \"/etc/security/faillock.conf\" file is configured to log username information when unsuccessful logon attempts occur with the following command:\n\n$ grep audit /etc/security/faillock.conf\n\naudit\n\nIf the \"audit\" option is not set, is missing, or is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to log username information when unsuccessful logon attempts occur.\n\nAdd/modify the \"/etc/security/faillock.conf\" file to match the following line:\n\naudit","ccis":["CCI-000044","CCI-000172"]},{"vulnId":"V-269153","ruleId":"SV-269153r1050035_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must maintain an account lock until the locked account is manually released by an administrator; and not automatically after a set time.","description":"By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-force attacks, is reduced. Limits are imposed by locking the account.","checkContent":"Verify AlmaLinux OS 9 is configured to lock an account until released by an administrator after three unsuccessful logon attempts with the command:\n\n$ grep unlock_time /etc/security/faillock.conf\n\nunlock_time = 0\n\nIf the \"unlock_time\" option is not set to \"0\", the line is missing, or is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to lock accounts until released by an administrator using pam_faillock.\n\nFirst, enable the feature using the following command:\n\n$ authselect enable-feature with-faillock\n\nThen, add or uncomment the following line in the \"/etc/security/faillock.conf\" file:\n\nunlock_time = 0","ccis":["CCI-002238"]},{"vulnId":"V-269154","ruleId":"SV-269154r1050036_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must ensure account locks persist across reboots.","description":"By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-forcing, is reduced. Limits are imposed by locking the account.\n\nHaving account locks persist across reboots ensures that a locked account is only unlocked by an administrator. \n\nIf the locks did not persist across reboots, an attacker could reboot the system to continue brute force attacks against the accounts on the system.\n\nThe default /var/run/faillock directory is cleared upon reboot and should not be used.","checkContent":"Verify the \"/etc/security/faillock.conf\" file is configured to use a nondefault faillock directory to ensure its contents persist after reboot with the following command:\n\n$ grep \"dir =\" /etc/security/faillock.conf\n\ndir = /var/log/faillock\n\nIf the \"dir\" option is set to the default /var/run/faillock directory, is missing, or is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to maintain the contents of the faillock directory after a reboot.\n\nAdd/modify the \"/etc/security/faillock.conf\" file to match the following line:\n\ndir = /var/log/faillock","ccis":["CCI-002238"]},{"vulnId":"V-269155","ruleId":"SV-269155r1050037_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must configure the appropriate SELinux context on the nondefault faillock tally directory.","description":"By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-forcing, is reduced. Limits are imposed by locking the account.\n\nNot having the correct SELinux context on the faillock directory may lead to unauthorized access to the directory meaning that accounts could be unlocked by a nonadministrator.","checkContent":"Note: If the system does not have SELinux enabled and enforcing, a targeted policy, or if the pam_faillock module is not configured for use, this requirement is Not Applicable.\n\nVerify the location of the nondefault tally directory for the pam_faillock module with the following command:\n\n$ grep \"dir =\" /etc/security/faillock.conf\n\ndir = /var/log/faillock\n\nCheck the security context type of the nondefault tally directory with the following command:\n\n$ ls -Zd /var/log/faillock\n\nsystem_u:object_r:faillog_t:s0 /var/log/faillock\n\nIf the security context type of the nondefault tally directory is not \"faillog_t\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to allow the use of a nondefault faillock tally directory while SELinux enforces a targeted policy.\n\nCreate a nondefault faillock tally directory (if it does not already exist) using the following command:\n\n$ mkdir /var/log/faillock\n\nUpdate the /etc/selinux/targeted/contexts/files/file_contexts.local file with the \"faillog_t\" context type for the nondefault faillock tally directory using the following command:\n\n$ semanage fcontext -a -t faillog_t \"/var/log/faillock(/.*)?\"\n\nUpdate the context type of the nondefault faillock directory and files within using the following command:\n\n$ restorecon -RFv /var/log/faillock","ccis":["CCI-002238"]},{"vulnId":"V-269156","ruleId":"SV-269156r1050038_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent users from disabling the Standard Mandatory DOD Notice and Consent Banner for graphical user interfaces.","description":"Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance.\n\nSystem use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist.\n\nThe banner must be formatted in accordance with applicable DOD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters:\n\n\"You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\n\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n\n-At any time, the USG may inspect and seize data stored on this IS.\n\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.\"\n\nUse the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner:\n\n\"I've read & consent to terms in IS user agreem't.\"\n\nIf a login banner is not displayed, it may be difficult to prosecute an attacker.\n\nSatisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000228-GPOS-00088","checkContent":"Note: This requirement assumes the use of the default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 prevents a user from disabling the banner for graphical user interfaces.\n\nDetermine if the operating system prevents modification of the GNOME banner setting with the following command:\n\n$ grep banner-message-enable /etc/dconf/db/local.d/locks/*\n\nbanner-message-enable\n\nIf \"banner-message-enable\" is commented out or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to prevent a user being able to override the GNOME banner setting by running the following commands:\n\n$ echo \"banner-message-enable\" | tee /etc/dconf/db/local.d/locks/00-banner > /dev/null\n\n$ dconf update","ccis":["CCI-000048","CCI-001384","CCI-001385","CCI-001386","CCI-001387","CCI-001388"]},{"vulnId":"V-269157","ruleId":"SV-269157r1050039_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must display the Standard Mandatory DOD Notice and Consent Banner before granting local or remote access to the system via a graphical user logon.","description":"Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance.\n\nSystem use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist.\n\nThe banner must be formatted in accordance with applicable DOD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters:\n\n\"You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\n\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n\n-At any time, the USG may inspect and seize data stored on this IS.\n\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.\"\n\nUse the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner:\n\n\"I've read & consent to terms in IS user agreem't.\"\n\nIf a login banner is not displayed, it may be difficult to prosecute an attacker.\n\nSatisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000228-GPOS-00088","checkContent":"Note: This requirement assumes the use of the default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable. \n\nVerify AlmaLinux OS 9 displays a banner before granting access to the operating system via a graphical user logon.\n\nFirst, identify the location of the banner message file with the following command:\n\n$ grep banner-message-text /etc/dconf/db/local.d/*\n\n/etc/dconf/db/local.d/01-banner-message\n\nDetermine if the operating system displays a banner at the logon screen with the following command:\n\n$ gsettings get org.gnome.login-screen banner-message-enable\n\ntrue\n\nNext, check that file contains the correct wording with the following command (substituting the path from above):\n\n$ cat /etc/dconf/db/local.d/01-banner-message\n\nIf the banner is set correctly it will return the following text:\n\n\"You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\n\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n\n-At any time, the USG may inspect and seize data stored on this IS.\n\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.\"\n\nIf the banner text does not match the Standard Mandatory DOD Notice and Consent Banner exactly, or the dconf database does not include the \"banner-message-text\" setting or if it is not enabled, this is a finding.","fixText":"Configure AlmaLinux OS 9 to display the Standard Mandatory DOD Notice and Consent Banner before granting access to the system via a graphical user logon.\n\nCreate a database to contain the systemwide graphical user logon settings (if it does not already exist) with the following command:\n\n$ touch /etc/dconf/db/local.d/01-banner-message\n\nAdd the following lines to the [org/gnome/login-screen] section of the \"/etc/dconf/db/local.d/01-banner-message\":\n\n[org/gnome/login-screen]\nbanner-message-enable=true\nbanner-message-text='You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\\n-At any time, the USG may inspect and seize data stored on this IS.\\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.'\n\nRun the following command to update the database:\n\n$ dconf update","ccis":["CCI-000048","CCI-001384","CCI-001385","CCI-001386","CCI-001387","CCI-001388"]},{"vulnId":"V-269158","ruleId":"SV-269158r1050040_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must display the Standard Mandatory DOD Notice and Consent Banner before granting local or remote access to the system via a command line user logon.","description":"Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance.\n\nSystem use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist.\n\nThe banner must be formatted in accordance with applicable DOD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters:\n\n\"You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\n\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n\n-At any time, the USG may inspect and seize data stored on this IS.\n\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.\"\n\nUse the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner:\n\n\"I've read & consent to terms in IS user agreem't.\"\n\nIf a login banner is not displayed, it may be difficult to prosecute an attacker.\n\nSatisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000228-GPOS-00088","checkContent":"Verify AlmaLinux OS 9 displays the Standard Mandatory DOD Notice and Consent Banner before granting access to the operating system via a command line user logon.\n\nCheck that a banner is displayed at the command line login screen with the following command:\n\n$ cat /etc/issue\n\nIf the banner is set correctly it will return the following text:\n\n\"You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\n\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n\n-At any time, the USG may inspect and seize data stored on this IS.\n\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.\"\n\nIf the banner text does not match the Standard Mandatory DOD Notice and Consent Banner exactly, this is a finding.","fixText":"Configure AlmaLinux OS 9 to display the Standard Mandatory DOD Notice and Consent Banner before granting access to the system via command line logon by running the command:\n\n$ cat << EOF | tee /etc/issue\nYou are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\n\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n\n-At any time, the USG may inspect and seize data stored on this IS.\n\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.\n\nEOF","ccis":["CCI-000048","CCI-001384","CCI-001385","CCI-001386","CCI-001387","CCI-001388"]},{"vulnId":"V-269159","ruleId":"SV-269159r1050041_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must display the Standard Mandatory DOD Notice and Consent Banner before granting local or remote access to the system via an SSH user logon.","description":"Display of a standardized and approved use notification before granting access to the operating system ensures privacy and security notification verbiage used is consistent with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance.\n\nSystem use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist.\n\nThe banner must be formatted in accordance with applicable DOD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters:\n\n\"You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\n\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n\n-At any time, the USG may inspect and seize data stored on this IS.\n\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.\"\n\nUse the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner:\n\n\"I've read & consent to terms in IS user agreem't.\"\n\nIf a login banner is not displayed, it may be difficult to prosecute an attacker.\n\nSatisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000228-GPOS-00088","checkContent":"Verify AlmaLinux OS 9 displays the Standard Mandatory DOD Notice and Consent Banner before granting access to the operating system via a command line user logon.\n\nFirst, check that a banner text is correct with the following command:\n\n$ cat /etc/issue.net\n\nIf the banner is set correctly it will return the following text:\n\n\"You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\n\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n\n-At any time, the USG may inspect and seize data stored on this IS.\n\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.\"\n\nNext, check that the OpenSSH server is configured to display the banner using the following command:\n\n$ sshd -T | grep banner\n\nbanner /etc/issue.net\n\nIf the banner text does not match the Standard Mandatory DOD Notice and Consent Banner exactly, or the SSH configuration does not include \"Banner /etc/issue.net\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to display the Standard Mandatory DOD Notice and Consent Banner before granting access to the system via command line logon by running the command:\n\ncat << EOF | tee /etc/issue.net\nYou are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\n\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n\n-At any time, the USG may inspect and seize data stored on this IS.\n\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.\n\nEOF","ccis":["CCI-000048","CCI-001384","CCI-001385","CCI-001386","CCI-001387","CCI-001388"]},{"vulnId":"V-269160","ruleId":"SV-269160r1050042_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the s-nail package installed.","description":"The \"s-nail\" package provides the mail command required to allow sending email notifications of unauthorized configuration changes to designated personnel.","checkContent":"Verify that AlmaLinux OS 9 has the \"s-nail\" package is installed on the system with the following command:\n\n$ dnf list --installed s-nail\n\ns-nail.x86_64           14.9.22-6.el9              @AppStream\n    \nIf \"s-nail\" package is not installed, this is a finding.","fixText":"The s-nail package can be installed with the following command:\n\n$ dnf install s-nail","ccis":["CCI-001744"]},{"vulnId":"V-269161","ruleId":"SV-269161r1050043_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 SSH daemon must not allow Generic Security Service Application Program Interface (GSSAPI) authentication.","description":"GSSAPI authentication is used to provide additional authentication mechanisms to applications. Allowing GSSAPI authentication through SSH exposes the system's GSSAPI to remote hosts, increasing the attack surface of the system.","checkContent":"Verify the SSH daemon does not allow GSSAPI authentication with the following command:\n\n$ /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*gssapiauthentication'\n\ngssapiauthentication no\n\nIf 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 information system security officer (ISSO), this is a finding.\n\nIf the required value is not set, this is a finding.","fixText":"Configure the SSH daemon to not allow GSSAPI authentication.\n\nAdd the following line to \"/etc/ssh/sshd_config\", or uncomment the line and set the value to \"no\":\n\nGSSAPIAuthentication no\n\nAlternatively, add the setting to an included file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\nGSSAPIAuthentication no\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-001813"]},{"vulnId":"V-269162","ruleId":"SV-269162r1050044_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 SSH daemon must not allow Kerberos authentication.","description":"Kerberos authentication for SSH is often implemented using Generic Security Service Application Program Interface (GSSAPI). If Kerberos is enabled through SSH, the SSH daemon provides a means of access to the system's Kerberos implementation. Vulnerabilities in the system's Kerberos implementations may be subject to exploitation.","checkContent":"Verify the SSH daemon does not allow Kerberos authentication with the following command:\n\n$ /usr/sbin/sshd -dd 2>&1 | awk '/filename/ {print $4}' | tr -d '\\r' | tr '\\n' ' ' | xargs sudo grep -iH '^\\s*kerberosauthentication'\n\nkerberosauthentication no\n\nIf the value is returned as \"yes\", the returned line is commented out, no output is returned, and the use of Kerberos authentication has not been documented with the information system security officer (ISSO), this is a finding.","fixText":"Configure the SSH daemon to not allow Kerberos authentication.\n\nAdd the following line to \"/etc/ssh/sshd_config\", or uncomment the line and set the value to \"no\":\n\nKerberosAuthentication no\n\nAlternatively, add the setting to an included file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\nKerberosAuthentication no\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-001813"]},{"vulnId":"V-269163","ruleId":"SV-269163r1050045_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must check the GPG signature of software packages originating from external software repositories before installation.","description":"Changes to any software components can have significant effects on the overall security of the operating system. This requirement ensures the software has not been tampered with and that it has been provided by a trusted vendor.\n\nAccordingly, patches, service packs, device drivers, or operating system components must be signed with a certificate recognized and approved by the organization.\n\nVerifying the authenticity of the software prior to installation validates the integrity of the patch or upgrade received from a vendor. This ensures the software has not been tampered with and that it has been provided by a trusted vendor. Self-signed certificates are not allowed 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 certificate authority (CA).","checkContent":"Verify that dnf always checks the GPG signature of software packages originating from external software repositories before installation:\n\n$ grep gpgcheck /etc/dnf/dnf.conf\n\ngpgcheck=1\n\nIf \"gpgcheck\" is not set to \"1\", or if the option is missing or commented out, ask the system administrator how the GPG signatures of software packages are verified.\n\nIf there is no process to verify GPG signatures that is approved by the organization, this is a finding.","fixText":"Configure dnf to always check the GPG signature of software packages originating from external software repositories before installation.\n\nAdd or update the following line in the [main] section of the /etc/dnf/dnf.conf file:\n\ngpgcheck=1","ccis":["CCI-003992"]},{"vulnId":"V-269164","ruleId":"SV-269164r1050046_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must ensure cryptographic verification of vendor software packages.","description":"Changes to any software components can have significant effects on the overall security of the operating system. This requirement ensures the software has not been tampered with and that it has been provided by a trusted vendor.\n\nAccordingly, patches, service packs, device drivers, or operating system components must be signed with a certificate recognized and approved by the organization.\n\nVerifying the authenticity of the software prior to installation validates the integrity of the patch or upgrade received from a vendor. This ensures the software has not been tampered with and that it has been provided by a trusted vendor. Self-signed certificates are not allowed 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 certificate authority (CA).","checkContent":"Confirm AlmaLinux and TuxCare package-signing keys are installed on the system and verify their fingerprints match vendor values.\n\nThe keys are stored as \"RPM-GPG-KEY-AlmaLinux-9\" and \"RPM-GPG-KEY-TuxCare\" inside the \"/etc/pki/rpm-gpg/\" directory.\n\nList GPG keys installed on the system using the following command:\n\n$ rpm -q --queryformat \"%{SUMMARY}\\n\" gpg-pubkey\n\nTuxCare (Software Signing Key) <packager@tuxcare.com> public key\nAlmaLinux OS 9 <packager@almalinux.org> public key\n\nIf the AlmaLinux and TuxCare GPG keys are not installed, this is a finding.\n\nList key fingerprints of installed GPG keys using the following commands:\n\n$ gpg -q --keyid-format short --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-9 \n\npub   rsa4096/B86B3716 2022-01-18 [SC]\n      Key fingerprint = BF18 AC28 7617 8908 D6E7  1267 D36C B86C B86B 3716\nuid                   AlmaLinux OS 9 <packager@almalinux.org>\nsub   rsa4096/C9BA6CAA 2022-01-18 [E]\n\n$ gpg -q --keyid-format short --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-TuxCare\n\npub   rsa4096/8D50EB66 2023-03-06 [SC]\n      Key fingerprint = FAD7 8590 81D0 738B 7A82  8496 D07B F2A0 8D50 EB66\nuid                   TuxCare (Software Signing Key) <packager@tuxcare.com>\nsub   rsa4096/A9C70659 2023-03-06 [E]\n\nIf either \"/etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-9\" or \"/etc/pki/rpm-gpg/RPM-GPG-KEY-TuxCare\" key files are missing, this is a finding.\n\nCompare key fingerprints of installed AlmaLinux and TuxCare GPG keys with fingerprints listed at \n\nhttps://almalinux.org/security/\n\nhttps://docs.tuxcare.com/enterprise-support-for-almalinux/#gnupg-keys\n\nIf the key fingerprints do not match, this is a finding.","fixText":"Install AlmaLinux and TuxCare package-signing keys on the system and verify their fingerprints match vendor values.\n\n$ curl https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux-9 -o /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-9\n\n$ curl https://repo.tuxcare.com/tuxcare/RPM-GPG-KEY-TuxCare -o /etc/pki/rpm-gpg/RPM-GPG-KEY-TuxCare\n\n$ rpm --import https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux-9\n\n$ rpm --import https://repo.tuxcare.com/tuxcare/RPM-GPG-KEY-TuxCare\n\nUsing the steps listed in the Check, confirm the newly imported keys show as installed on the system and verify their fingerprints match vendor values.","ccis":["CCI-003992"]},{"vulnId":"V-269165","ruleId":"SV-269165r1050047_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must check the GPG signature of locally installed software packages before installation.","description":"Changes to any software components can have significant effects on the overall security of the operating system. This requirement ensures the software has not been tampered with and that it has been provided by a trusted vendor.\n\nAccordingly, patches, service packs, device drivers, or operating system components must be signed with a certificate recognized and approved by the organization.\n\nVerifying the authenticity of the software prior to installation validates the integrity of the patch or upgrade received from a vendor. This ensures 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 certificate authority (CA).","checkContent":"Verify that dnf always checks the GPG signature of locally installed software packages before installation:\n\n$ grep localpkg_gpgcheck /etc/dnf/dnf.conf \n\nlocalpkg_gpgcheck=1 \n\nIf \"localpkg_gpgcheck\" is not set to \"1\", or if the option is missing, or is commented out, ask the system administrator (SA) how the GPG signatures of local software packages are being verified.\n\nIf there is no process to verify GPG signatures that is approved by the organization, this is a finding.","fixText":"Configure dnf to always check the GPG signature of local software packages before installation.\n\nAdd or update the following line in the [main] section of the /etc/dnf/dnf.conf file:\n\nlocalpkg_gpgcheck=1","ccis":["CCI-003992"]},{"vulnId":"V-269166","ruleId":"SV-269166r1050048_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must check the GPG signature of repository metadata before package installation.","description":"Changes to any software components can have significant effects on the overall security of the operating system. This requirement ensures the software has not been tampered with and that it has been provided by a trusted vendor.\n\nAccordingly, patches, service packs, device drivers, or operating system components must be signed with a certificate recognized and approved by the organization.\n\nVerifying the authenticity of the software prior to installation validates the integrity of the patch or upgrade received from a vendor. This ensures 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 certificate authority (CA).","checkContent":"Verify that dnf always checks the GPG signature of repository metadata:\n\n$ grep repo_gpgcheck /etc/dnf/dnf.conf /etc/yum.repos.d/*.repo\n\nrepo_gpgcheck=1 \n\nIf \"repo_gpgcheck\" is not set to \"1\" in the global \"/etc/dnf/dnf.conf\" file, or if the option is missing or commented out, this is a finding.\n\nIf \"repo_gpgcheck\" is set to \"0\" in any of the \"/etc/yum.repos.d/*.repo\" files and the information system security officer (ISSO) lacks a documented requirement, this is a finding.\n\nNote: Not all repositories support this feature.","fixText":"Configure dnf to always check the GPG signature of repository metadata.\n\nAdd or update the following line in the [main] section of the /etc/dnf/dnf.conf file:\n\nrepo_gpgcheck=1\n\nRemove any instances of \"repo_gpgcheck=0\" from any \"/etc/yum.repos.d/*.repo\" files.","ccis":["CCI-003992"]},{"vulnId":"V-269167","ruleId":"SV-269167r1050049_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must have GPG signature verification enabled for all software repositories.","description":"Changes to any software components can have significant effects on the overall security of the operating system. This requirement ensures the software has not been tampered with and that it has been provided by a trusted vendor.\n\nAccordingly, patches, service packs, device drivers, or operating system components must be signed with a certificate recognized and approved by the organization.\n\nVerifying the authenticity of the software prior to installation validates the integrity of the patch or upgrade received from a vendor. This ensures 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 certificate authority (CA).","checkContent":"Verify that all software repositories defined in \"/etc/yum.repos.d/\" have been configured with \"gpgcheck\" enabled:\n\n$ grep gpgcheck /etc/yum.repos.d/*.repo\n\n/etc/yum.repos.d/tuxcare-fips.repo:gpgcheck=1\n\nIf \"gpgcheck\" is not set to \"1\" for all returned lines, this is a finding.","fixText":"Configure all software repositories defined in \"/etc/yum.repos.d/\" to have \"gpgcheck\" enabled:\n\n$ sed -i 's/gpgcheck\\s*=.*/gpgcheck=1/g' /etc/yum.repos.d/*","ccis":["CCI-003992"]},{"vulnId":"V-269168","ruleId":"SV-269168r1155267_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent the loading of a new kernel for later execution.","description":"Changes to any software components can have significant effects on the overall security of the operating system. This requirement ensures the software has not been tampered with and that it has been provided by a trusted vendor.\n\nDisabling kexec_load prevents an unsigned kernel image (that could be a windows kernel or modified vulnerable kernel) from being loaded. Kexec can be used subvert the entire secureboot process and should be avoided at all costs especially since it can load unsigned kernel images.","checkContent":"Verify AlmaLinux OS 9 is configured to disable kernel image loading.\n\nCheck the status of the kernel.kexec_load_disabled kernel parameter with the following command:\n\n$ sysctl kernel.kexec_load_disabled\n\nkernel.kexec_load_disabled = 1\n\nIf \"kernel.kexec_load_disabled\" is not set to \"1\" or is missing, this is a finding.\n\nCheck that the configuration files are present to enable this kernel parameter with the following command:\n\n$ /usr/lib/systemd/systemd-sysctl --cat-config | grep kernel.kexec_load_disabled\n\nkernel.kexec_load_disabled = 1\n\nIf \"kernel.kexec_load_disabled\" is not set to \"1\" or is missing, this is a finding.","fixText":"Add or edit the following line in a system configuration file in the \"/etc/sysctl.d/\" directory:\n\nkernel.kexec_load_disabled = 1\n\nLoad settings from all system configuration files with the following command:\n\n$ sysctl –system","ccis":["CCI-003992"]},{"vulnId":"V-269169","ruleId":"SV-269169r1050051_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 system commands must be group-owned by root or a system account.","description":"If AlmaLinux OS 9 allowed any user to make changes to software libraries, then those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to AlmaLinux OS 9 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"Verify the system commands contained in the following directories are group-owned by \"root\", or a required system account, with the following command:\n\n$ find -L /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin ! -group root -exec ls -l {} \\;\n\nIf any system commands are returned and is not group-owned by a required system account, this is a finding.","fixText":"Configure the system commands to be protected from unauthorized access.\n\nRun the following command, replacing \"[FILE]\" with any system command file not group-owned by \"root\" or a required system account.\n\n$ chgrp root [FILE]","ccis":["CCI-001499"]},{"vulnId":"V-269170","ruleId":"SV-269170r1050052_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 system commands must be owned by root.","description":"If AlmaLinux OS 9 allowed any user to make changes to software libraries, then those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to AlmaLinux OS 9 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"Verify the system commands contained in the following directories are owned by \"root\" with the following command:\n\n$ find -L /bin /sbin /usr/bin /usr/sbin /usr/libexec /usr/local/bin /usr/local/sbin ! -user root -exec ls -l {} \\;\n\nIf any system commands are found to not be owned by root, this is a finding.","fixText":"Configure the system commands to be protected from unauthorized access.\n\nRun the following command, replacing \"[FILE]\" with any system command file not owned by \"root\".\n\n$ chown root [FILE]","ccis":["CCI-001499"]},{"vulnId":"V-269171","ruleId":"SV-269171r1050053_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 system commands must have mode 755 or less permissive.","description":"If AlmaLinux OS 9 allowed any user to make changes to software libraries, then those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to AlmaLinux OS 9 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"Verify the system commands contained in the following directories have mode \"755\" or less permissive with the following command:\n\n$ find -L /bin /sbin /usr/bin /usr/sbin /usr/libexec /usr/local/bin /usr/local/sbin -perm /022 -exec ls -l {} \\;\n\nIf any system commands are found to be group-writable or world-writable, this is a finding.","fixText":"Configure the system commands to be protected from unauthorized access.\n\nRun the following command, replacing \"[FILE]\" with any system command with a mode more permissive than \"755\".\n\n$ chmod 755 [FILE]","ccis":["CCI-001499"]},{"vulnId":"V-269172","ruleId":"SV-269172r1050054_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 library directories must be group-owned by root or a system account.","description":"If AlmaLinux OS 9 allowed any user to make changes to software libraries, then those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to AlmaLinux OS 9 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"Verify the systemwide shared library directories are group-owned by \"root\" with the following command:\n\n$ find -L /lib /lib64 /usr/lib /usr/lib64 ! -group root -type d -exec stat -c \"%n %G\" '{}' \\;\n\nIf any systemwide shared library directory is returned and is not group owned by a required system account, this is a finding.","fixText":"Configure the systemwide shared library directories (/lib, /lib64, /usr/lib and /usr/lib64) to be protected from unauthorized access.\n\nRun the following command, replacing \"[DIRECTORY]\" with any library directory not group-owned by \"root\".\n\n$ chgrp root [DIRECTORY]","ccis":["CCI-001499"]},{"vulnId":"V-269173","ruleId":"SV-269173r1050055_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 library directories must be owned by root.","description":"If AlmaLinux OS 9 allowed any user to make changes to software libraries, then those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to AlmaLinux OS 9 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"Verify the systemwide shared library directories are owned by \"root\" with the following command:\n\n$ find -L /lib /lib64 /usr/lib /usr/lib64 ! -user root -type d -exec stat -c \"%n %U\" '{}' \\;\n\nIf any systemwide shared library directory is not owned by root, this is a finding.","fixText":"Configure the systemwide shared library directories within (/lib, /lib64, /usr/lib and /usr/lib64) to be protected from unauthorized access.\n\nRun the following command, replacing \"[DIRECTORY]\" with any library directory not owned by \"root\".\n\n$ chown root [DIRECTORY]","ccis":["CCI-001499"]},{"vulnId":"V-269174","ruleId":"SV-269174r1050056_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 library directories must have mode 755 or less permissive.","description":"If AlmaLinux OS 9 allowed any user to make changes to software libraries, then those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to AlmaLinux OS 9 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"Verify the systemwide shared library directories have mode \"755\" or less permissive with the following command:\n\n$ find -L /lib /lib64 /usr/lib /usr/lib64 -perm /022 -type d -exec ls -l {} \\;\n\nIf any systemwide shared library file is found to be group-writable or world-writable, this is a finding.","fixText":"Configure the systemwide shared library directories (/lib, /lib64, /usr/lib and /usr/lib64) to be protected from unauthorized access. \n\nRun the following command, replacing \"[DIRECTORY]\" with any library directory with a mode more permissive than 755.\n\n$ chmod 755 [DIRECTORY]","ccis":["CCI-001499"]},{"vulnId":"V-269175","ruleId":"SV-269175r1101800_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 library files must be group-owned by root or a system account.","description":"If AlmaLinux OS 9 allowed any user to make changes to software libraries, then those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to AlmaLinux OS 9 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"Verify the systemwide shared library files contained in the directories \"/lib\", \"/lib64\", \"/usr/lib\", and \"/usr/lib64\" are group owned by root with the following command:\n\n$ sudo find /lib /lib64 /usr/lib /usr/lib64 -type f -name '*.so*' ! -group root -exec stat -c \"%n %G\" {} +\n\nIf any output is returned, this is a finding.","fixText":"Configure the systemwide shared library files contained in the directories \"/lib\", \"/lib64\", \"/usr/lib\", and \"/usr/lib64\" are group owned by root with the following command:\n\n$ sudo find /lib /lib64 /usr/lib /usr/lib64 -type f -name '*.so*' ! -group root -exec chown :root {} +","ccis":["CCI-001499"]},{"vulnId":"V-269176","ruleId":"SV-269176r1101803_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 library files must be owned by root.","description":"If AlmaLinux OS 9 allowed any user to make changes to software libraries, then those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to AlmaLinux OS 9 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"Verify the systemwide shared library files contained in the directories \"/lib\", \"/lib64\", \"/usr/lib\", and \"/usr/lib64\" are owned by root with the following command:\n\n$ sudo find /lib /lib64 /usr/lib /usr/lib64 -type f -name '*.so*' ! -user root -exec stat -c \"%n %U\" {} +\n\nIf any output is returned, this is a finding.","fixText":"Configure the systemwide shared library files contained in the directories \"/lib\", \"/lib64\", \"/usr/lib\", and \"/usr/lib64\" to be owned by root with the following command:\n\n$ sudo find /lib /lib64 /usr/lib /usr/lib64 -type f -name '*.so*' ! -user root -exec chown root {} +","ccis":["CCI-001499"]},{"vulnId":"V-269177","ruleId":"SV-269177r1101806_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 library files must have mode 755 or less permissive.","description":"If AlmaLinux OS 9 allowed any user to make changes to software libraries, then those changes might be implemented without undergoing the appropriate testing and approvals that are part of a robust change management process.\n\nThis requirement applies to AlmaLinux OS 9 with software libraries that are accessible and configurable, as in the case of interpreted languages. Software libraries also include privileged programs that execute with escalated privileges.","checkContent":"Verify the systemwide shared library files contained in the directories \"/lib\", \"/lib64\", \"/usr/lib\", and \"/usr/lib64\" have mode 0755 or less permissive.\n\nCheck that the systemwide shared library files have mode 0755 or less permissive with the following command:\n\n$ sudo find /lib /lib64 /usr/lib /usr/lib64 -type f -name '*.so*' -perm /022 -exec stat -c \"%n %a\" {} +\n\nIf any output is returned, this is a finding.","fixText":"Configure the systemwide shared library files contained in the directories \"/lib\", \"/lib64\", \"/usr/lib\", and \"/usr/lib64\" have mode 0755 or less permissive with the following command.\n\n$ sudo find /lib /lib64 /usr/lib /usr/lib64 -type f -name '*.so*' -perm /022 -exec chmod go-w {} +","ccis":["CCI-001499"]},{"vulnId":"V-269178","ruleId":"SV-269178r1156418_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable core dumps for all users.","description":"A core dump includes a memory image taken at the time the operating system terminates an application. The memory image could contain sensitive data and is generally useful only for developers or system operators trying to debug problems.\n\nEnabling core dumps on production systems is not recommended; however, there may be overriding operational requirements to enable advanced debugging. Permitting temporary enablement of core dumps during such situations must be reviewed through local needs and policy.","checkContent":"Verify AlmaLinux OS 9 disables core dumps for all users by issuing the following command:\n\nNote: If kernel dumps are disabled in accordance with ALMA-09-011680, this requirement is not applicable.\n\n$ grep -r -s core /etc/security/limits.conf /etc/security/limits.d/*.conf\n\n/etc/security/limits.conf:* hard core 0\n\nThis can be set as a global domain (with the * wildcard) but may be set differently for multiple domains.\n\nIf the \"core\" item is missing or commented out, or the value is anything other than \"0\", and the need for core dumps is not documented with the information system security officer (ISSO) as an operational requirement for all domains that have the \"core\" item assigned, this is a finding.\n\nIf entries exist for users or groups with a value set to anything other than \"0\", this is a finding.","fixText":"Configure the operating system to disable core dumps for all users.\n\nAdd the following line to the top of the /etc/security/limits.conf or in a single \".conf\" file defined in /etc/security/limits.d/:\n\n* hard core 0\n\nRemove or comment out any entries for users or groups with a value set to anything other than \"0\".","ccis":["CCI-000366"]},{"vulnId":"V-269179","ruleId":"SV-269179r1050061_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable acquiring, saving, and processing core dumps.","description":"A core dump includes a memory image taken at the time the operating system terminates an application. The memory image could contain sensitive data and is generally useful only for developers or system operators trying to debug problems.\n\nEnabling core dumps on production systems is not recommended; however, there may be overriding operational requirements to enable advanced debugging. Permitting temporary enablement of core dumps during such situations must be reviewed through local needs and policy.","checkContent":"Verify AlmaLinux OS 9 is not configured to acquire, save, or process core dumps with the following command:\n\n$ systemctl status systemd-coredump.socket\n systemd-coredump.socket\n     Loaded: masked (Reason: Unit systemd-coredump.socket is masked.)\n     Active: inactive (dead) since Mon 2024-02-26 13:31:02 UTC; 26s ago\n   Duration: 3h 13min 22.428s\n\nIf the \"systemd-coredump.socket\" is loaded and not masked and the need for core dumps is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"Configure the system to disable the systemd-coredump.socket with the following command:\n\n$ systemctl mask --now systemd-coredump.socket\n\nCreate symlink /etc/systemd/system/systemd-coredump.socket -> /dev/null\n\nReload the daemon for this change to take effect.\n\n$ systemctl daemon-reload","ccis":["CCI-000366"]},{"vulnId":"V-269180","ruleId":"SV-269180r1050062_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable storing core dumps.","description":"A core dump includes a memory image taken at the time the operating system terminates an application. The memory image could contain sensitive data and is generally useful only for developers or system operators trying to debug problems.\n\nEnabling core dumps on production systems is not recommended; however, there may be overriding operational requirements to enable advanced debugging. Permitting temporary enablement of core dumps during such situations must be reviewed through local needs and policy.","checkContent":"Verify AlmaLinux OS 9 disables storing core dumps for all users by issuing the following command:\n\n$ systemd-analyze cat-config systemd/coredump.conf | grep Storage\n\nStorage=none\n\nIf the \"Storage\" item is missing, commented out, or the value is anything other than \"none\" and the need for core dumps is not documented with the information system security officer (ISSO) as an operational requirement for all domains that have the \"core\" item assigned, this is a finding.","fixText":"Configure the operating system to disable storing core dumps for all users.\n\nAdd or modify the following line in the [Coredump} section of /etc/systemd/coredump.conf:\n\nStorage=none","ccis":["CCI-000366"]},{"vulnId":"V-269181","ruleId":"SV-269181r1050063_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable core dump backtraces.","description":"A core dump includes a memory image taken at the time the operating system terminates an application. The memory image could contain sensitive data and is generally useful only for developers or system operators trying to debug problems.\n\nEnabling core dumps on production systems is not recommended; however, there may be overriding operational requirements to enable advanced debugging. Permitting temporary enablement of core dumps during such situations must be reviewed through local needs and policy.","checkContent":"Verify AlmaLinux OS 9 disables core dump backtraces by issuing the following command:\n\n$ systemd-analyze cat-config systemd/coredump.conf | grep ProcessSizeMax\n\nProcessSizeMax=0\n\nIf the \"ProcessSizeMax\" item is missing, commented out, or the value is anything other than \"0\" and the need for core dumps is not documented with the information system security officer (ISSO) as an operational requirement for all domains that have the \"core\" item assigned, this is a finding.","fixText":"Configure the operating system to disable core dump backtraces.\n\nAdd or modify the following line in the [Coredump} section of /etc/systemd/coredump.conf:\n\nProcessSizeMax=0","ccis":["CCI-000366"]},{"vulnId":"V-269182","ruleId":"SV-269182r1050064_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable the kernel.core_pattern.","description":"A core dump includes a memory image taken at the time the operating system terminates an application. The memory image could contain sensitive data and is generally useful only for developers trying to debug problems.","checkContent":"Verify AlmaLinux OS 9 disables storing core dumps with the following commands:\n\n$ sysctl kernel.core_pattern\n\nkernel.core_pattern = |/bin/false\n\nIf 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.\n\nCheck that the configuration files are present to disable core dump storage.\n\n$ /usr/lib/systemd/systemd-sysctl --cat-config | egrep -v '^(#|;)' | grep -F kernel.core_pattern | tail -1\n\nkernel.core_pattern = |/bin/false\n\nIf \"kernel.core_pattern\" is not set to \"|/bin/false\" and is not documented with the ISSO as an operational requirement, or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to disable storing core dumps.\n\nCreate a numbered *.conf file in /etc/sysctl.d/ with the following content:\n\nkernel.core_pattern = |/bin/false\n\nThe system configuration files need to be reloaded for the changes to take effect. To reload the contents of the files, run the following command:\n\n$ sysctl –system","ccis":["CCI-000366"]},{"vulnId":"V-269183","ruleId":"SV-269183r1050065_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 cron configuration files directory must be group-owned by root.","description":"Service configuration files enable or disable features of their respective services that if configured incorrectly can lead to insecure and vulnerable configurations; therefore, service configuration files must be owned by the correct group to prevent unauthorized changes.","checkContent":"Verify the group ownership of all cron configuration files with the following command:\n\n$ stat -c \"%G %n\" /etc/cron*\n\nroot /etc/cron.d\nroot /etc/cron.daily\nroot /etc/cron.deny\nroot /etc/cron.hourly\nroot /etc/cron.monthly\nroot /etc/crontab\nroot /etc/cron.weekly\n\nIf any crontab is not group owned by root, this is a finding.","fixText":"Configure any cron configuration not group-owned by root with the following command:\n\n$ chgrp root [cron config file]","ccis":["CCI-000366"]},{"vulnId":"V-269184","ruleId":"SV-269184r1050066_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 cron configuration files directory must be owned by root.","description":"Service configuration files enable or disable features of their respective services that if configured incorrectly can lead to insecure and vulnerable configurations; therefore, service configuration files must be owned by the correct group to prevent unauthorized changes.","checkContent":"Verify the ownership of all cron configuration files with the command:\n\n$ stat -c \"%U %n\" /etc/cron*\n\nroot /etc/cron.d\nroot /etc/cron.daily\nroot /etc/cron.deny\nroot /etc/cron.hourly\nroot /etc/cron.monthly\nroot /etc/crontab\nroot /etc/cron.weekly\n\nIf any crontab is not owned by root, this is a finding.","fixText":"Configure any cron configuration not owned by root with the following command:\n\n$ chown root [cron config file]","ccis":["CCI-000366"]},{"vulnId":"V-269185","ruleId":"SV-269185r1050067_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 cron configuration directories must have a mode of 0700 or less permissive.","description":"Service configuration files enable or disable features of their respective services that if configured incorrectly can lead to insecure and vulnerable configurations. Therefore, service configuration files should have the correct access rights to prevent unauthorized changes.","checkContent":"Verify the permissions of the cron directories with the following command:\n\n$ find /etc/cron* -type d | xargs stat -c \"%#a %n\"\n\n0700 /etc/cron.d\n0700 /etc/cron.daily\n0700 /etc/cron.hourly\n0700 /etc/cron.monthly\n0700 /etc/cron.weekly\n\nIf any cron configuration directory is more permissive than \"700\", this is a finding.","fixText":"Configure any AlmaLinux OS 9 cron configuration directory with a mode more permissive than \"0700\" as follows:\n\nchmod 0700 [cron configuration directory]","ccis":["CCI-000366"]},{"vulnId":"V-269186","ruleId":"SV-269186r1050068_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/crontab file must have mode 0600.","description":"Service configuration files enable or disable features of their respective services that if configured incorrectly can lead to insecure and vulnerable configurations; therefore, service configuration files must have the correct access rights to prevent unauthorized changes.","checkContent":"Verify the permissions of /etc/crontab with the following command:\n\n$ stat -c \"%#a %n\" /etc/crontab\n\n0600\n\nIf /etc/crontab does not have a mode of \"0600\", this is a finding.","fixText":"Configure the AlmaLinux OS 9 file /etc/crontab with mode 600.\n\n$ chmod 0600 /etc/crontab","ccis":["CCI-000366"]},{"vulnId":"V-269187","ruleId":"SV-269187r1050069_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable the ability of a user to accidentally press Ctrl-Alt-Del and cause a system to shut down or reboot.","description":"A locally logged-in user who presses Ctrl-Alt-Del, when at the console, can reboot the system. If accidentally pressed, as could happen in the case of mixed OS environment, this can create the risk of short-term loss of availability of systems due to unintentional reboot.","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 is configured to ignore the Ctrl-Alt-Del sequence in the GNOME desktop with the following command:\n\n$ gsettings get org.gnome.settings-daemon.plugins.media-keys logout \n\n\"['']\"\n\nIf the GNOME desktop is configured to shut down when Ctrl-Alt-Del is pressed, this is a finding.","fixText":"Configure AlmaLinux OS 9 to ignore the Ctrl-Alt-Del sequence in the GNOME desktop.\n\nAdd 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:\n\n[org/gnome/settings-daemon/plugins/media-keys]\nlogout=['']\n\nRun the following command to update the database:\n\n$ dconf update","ccis":["CCI-000366"]},{"vulnId":"V-269188","ruleId":"SV-269188r1184093_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent a user from overriding the Ctrl-Alt-Del sequence settings for the graphical user interface.","description":"A locally logged-in user who presses Ctrl-Alt-Del, when at the console, can reboot the system. If accidentally pressed, as could happen in the case of mixed OS environment, this can create the risk of short-term loss of availability of systems due to unintentional reboot.","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nVerify that users cannot enable the Ctrl-Alt-Del sequence in the GNOME desktop with the following command:\n\n$ grep logout /etc/dconf/db/local.d/locks/* \n\n/org/gnome/settings-daemon/plugins/media-keys/logout\n\nIf the output is not \"/org/gnome/settings-daemon/plugins/media-keys/logout\", the line is commented out, or the line is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to disallow the user changing the Ctrl-Alt-Del sequence in the GNOME desktop.\n\nCreate a database to contain systemwide graphical user logon settings (if it does not already exist) with the following command:\n\n$ touch /etc/dconf/db/local.d/locks/session\n\nAdd the following line to the session locks file to prevent nonprivileged users from modifying the Ctrl-Alt-Del setting:\n\n/org/gnome/settings-daemon/plugins/media-keys/logout\n\nRun the following command to update the database:\n\n$ dconf update","ccis":["CCI-000366"]},{"vulnId":"V-269189","ruleId":"SV-269189r1050071_rule","severity":"medium","ruleTitle":"All AlmaLinux OS 9 local files and directories must have a valid group owner.","description":"Files without a valid group owner may be unintentionally inherited if a group is assigned the same Group Identifier (GID) as the GID of the files without a valid group owner.","checkContent":"Verify all local files and directories on AlmaLinux OS 9 have a valid group with the following command:\n\n$ df --local -P | awk {'if (NR!=1) print $6'} | xargs -I '{}' find '{}' -xdev -nogroup\n\nIf any files on the system do not have an assigned group, this is a finding.","fixText":"Either remove all files and directories from AlmaLinux OS 9 that do not have a valid group, or assign a valid group to all files and directories on the system with the \"chgrp\" command:\n\n$ chgrp <group> <file>","ccis":["CCI-000366"]},{"vulnId":"V-269190","ruleId":"SV-269190r1050072_rule","severity":"medium","ruleTitle":"All AlmaLinux OS 9 local files and directories must have a valid owner.","description":"Unowned files and directories may be unintentionally inherited if a user is assigned the same user identifier \"UID\" as the UID of the unowned files.","checkContent":"Verify all local files and directories on AlmaLinux OS 9 have a valid owner with the following command:\n\n$ df --local -P | awk {'if (NR!=1) print $6'} | xargs -I '{}' find '{}' -xdev -nouser\n\nIf any files on the system do not have an assigned owner, this is a finding.","fixText":"Either remove all files and directories from the system that do not have a valid user, or assign a valid user to all unowned files and directories on AlmaLinux OS 9 with the \"chown\" command:\n\n$ chown <user> <file>","ccis":["CCI-000366"]},{"vulnId":"V-269191","ruleId":"SV-269191r1050073_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/group- file must be group owned by root.","description":"The \"/etc/group-\" file is a backup file of \"/etc/group\", and as such, contains information regarding groups that are configured on the system. Protection of this file is important for system security.","checkContent":"Verify the group ownership of the \"/etc/group-\" file with the following command:\n\n$ stat -c \"%G %n\" /etc/group-\n\nroot /etc/group-\n\nIf \"/etc/group-\" file does not have a group owner of \"root\", this is a finding.","fixText":"Change the group of the file /etc/group- to root by running the following command:\n\n$ chgrp root /etc/group-","ccis":["CCI-000366"]},{"vulnId":"V-269192","ruleId":"SV-269192r1050074_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/group- file must be owned by root.","description":"The \"/etc/group-\" file is a backup file of \"/etc/group\", and as such, contains information regarding groups that are configured on the system. Protection of this file is important for system security.","checkContent":"Verify the ownership of the \"/etc/group-\" file with the following command:\n\n$ stat -c \"%U %n\" /etc/group- \n\nroot /etc/group- \n\nIf \"/etc/group-\" file does not have an owner of \"root\", this is a finding.","fixText":"Change the owner of the file /etc/group- to root by running the following command:\n\n$ chown root /etc/group-","ccis":["CCI-000366"]},{"vulnId":"V-269193","ruleId":"SV-269193r1050075_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/group- file must have mode 0644 or less permissive to prevent unauthorized access.","description":"The \"/etc/group-\" file is a backup file of \"/etc/group\", and as such, contains information regarding groups that are configured on the system. Protection of this file is important for system security.","checkContent":"Verify that the \"/etc/group-\" file has mode \"0644\" or less permissive with the following command:\n\n$ stat -c \"%#a %n\" /etc/group-\n\n0644 /etc/group-\n\nIf a value of \"0644\" or less permissive is not returned, this is a finding.","fixText":"Change the mode of the file \"/etc/group-\" to \"0644\" by running the following command:\n\n$ chmod 0644 /etc/group-","ccis":["CCI-000366"]},{"vulnId":"V-269194","ruleId":"SV-269194r1050076_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/group file must be group owned by root.","description":"The \"/etc/group\" file contains information regarding groups that are configured on the system. Protection of this file is important for system security.","checkContent":"Verify the group ownership of the \"/etc/group\" file with the following command:\n\n$ stat -c \"%G %n\" /etc/group \n\nroot /etc/group\n\nIf \"/etc/group\" file does not have a group owner of \"root\", this is a finding.","fixText":"Change the group of the file /etc/group to root by running the following command:\n\n$ chgrp root /etc/group","ccis":["CCI-000366"]},{"vulnId":"V-269195","ruleId":"SV-269195r1050077_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/group file must be owned by root.","description":"The \"/etc/group\" file contains information regarding groups that are configured on the system. Protection of this file is important for system security.","checkContent":"Verify the ownership of the \"/etc/group\" file with the following command:\n\n$ stat -c \"%U %n\" /etc/group \n\nroot /etc/group \n\nIf \"/etc/group\" file does not have an owner of \"root\", this is a finding.","fixText":"Change the owner of the file /etc/group to root by running the following command:\n\n$ chown root /etc/group","ccis":["CCI-000366"]},{"vulnId":"V-269196","ruleId":"SV-269196r1050078_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/group file must have mode 0644 or less permissive to prevent unauthorized access.","description":"The \"/etc/group\" file contains information regarding groups that are configured on the system. Protection of this file is important for system security.","checkContent":"Verify that the \"/etc/group\" file has mode \"0644\" or less permissive with the following command:\n\n$ stat -c \"%#a %n\" /etc/group\n\n0644 /etc/group\n\nIf a value of \"0644\" or less permissive is not returned, this is a finding.","fixText":"Change the mode of the file \"/etc/group\" to \"0644\" by running the following command:\n\n$ chmod 0644 /etc/group","ccis":["CCI-000366"]},{"vulnId":"V-269197","ruleId":"SV-269197r1050079_rule","severity":"medium","ruleTitle":"The /boot/grub2/grub.cfg file must be group-owned by root.","description":"The \"root\" group is a highly privileged group. Furthermore, the group-owner of this file should not have any access privileges anyway.","checkContent":"Verify the group ownership of the \"/boot/grub2/grub.cfg\" file with the following command:\n\n$ stat -c \"%G %n\" /boot/grub2/grub.cfg \n\nroot /boot/grub2/grub.cfg\n\nIf \"/boot/grub2/grub.cfg\" file does not have a group owner of \"root\", this is a finding.","fixText":"Change the group of the file /boot/grub2/grub.cfg to root by running the following command:\n\n$ chgrp root /boot/grub2/grub.cfg","ccis":["CCI-000366"]},{"vulnId":"V-269198","ruleId":"SV-269198r1050779_rule","severity":"medium","ruleTitle":"The /boot/grub2/grub.cfg file must be owned by root.","description":"The \"/boot/grub2/grub.cfg\" file stores sensitive system configuration. Protection of this file is critical for system security.","checkContent":"Verify the ownership of the \"/boot/grub2/grub.cfg\" file with the following command:\n\n$ stat -c \"%U %n\" /boot/grub2/grub.cfg \n\nroot /boot/grub2/grub.cfg \n\nIf \"/boot/grub2/grub.cfg\" file does not have an owner of \"root\", this is a finding.","fixText":"Change the owner of the file /boot/grub2/grub.cfg to root by running the following command:\n\n$ chown root /boot/grub2/grub.cfg","ccis":["CCI-000366"]},{"vulnId":"V-269199","ruleId":"SV-269199r1050081_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable the ability of systemd to spawn an interactive boot process.","description":"Using interactive or recovery boot, the console user could disable auditing, firewalls, or other services, weakening system security.","checkContent":"Verify that GRUB 2 is configured to disable interactive boot.\n\nCheck that the current GRUB 2 configuration disables the ability of systemd to spawn an interactive boot process with the following command:\n\n$ grubby --info=ALL | grep args | grep 'systemd.confirm_spawn'\n\nIf any output is returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to disable the ability of systemd to spawn an interactive boot process with the following command:\n\n$ grubby --update-kernel=ALL --remove-args=\"systemd.confirm_spawn\"","ccis":["CCI-000366"]},{"vulnId":"V-269200","ruleId":"SV-269200r1050082_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/gshadow- file must be group-owned by root.","description":"The \"/etc/gshadow-\" file is a backup of \"/etc/gshadow\", and as such, contains group password hashes. Protection of this file is critical for system security.","checkContent":"Verify the group ownership of the \"/etc/gshadow-\" file with the following command:\n\n$ stat -c \"%G %n\" /etc/gshadow- \n\nroot /etc/gshadow-\n\nIf \"/etc/gshadow-\" file does not have a group owner of \"root\", this is a finding.","fixText":"Change the group of the file /etc/gshadow- to root by running the following command:\n\n$ chgrp root /etc/gshadow-","ccis":["CCI-000366"]},{"vulnId":"V-269201","ruleId":"SV-269201r1050083_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/gshadow- file must be owned by root.","description":"The \"/etc/gshadow-\" file is a backup of \"/etc/gshadow\", and as such, contains group password hashes. Protection of this file is critical for system security.","checkContent":"Verify the ownership of the \"/etc/gshadow-\" file with the following command:\n\n$ stat -c \"%U %n\" /etc/gshadow- \n\nroot /etc/gshadow- \n\nIf \"/etc/gshadow-\" file does not have an owner of \"root\", this is a finding.","fixText":"Change the owner of the file /etc/gshadow- to root by running the following command:\n\n$ chown root /etc/gshadow-","ccis":["CCI-000366"]},{"vulnId":"V-269202","ruleId":"SV-269202r1050084_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/gshadow- file must have mode 0000 or less permissive to prevent unauthorized access.","description":"The \"/etc/gshadow-\" file is a backup of \"/etc/gshadow\", and as such, contains group password hashes. Protection of this file is critical for system security.","checkContent":"Verify that the \"/etc/gshadow-\" file has mode \"0000\" with the following command:\n\n$ stat -c \"%a %n\" /etc/gshadow-\n\n0 /etc/gshadow-\n\nIf a value of \"0\" is not returned, this is a finding.","fixText":"Change the mode of the file \"/etc/gshadow-\" to \"0000\" by running the following command:\n\n$ chmod 0000 /etc/gshadow-","ccis":["CCI-000366"]},{"vulnId":"V-269203","ruleId":"SV-269203r1050085_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/gshadow file must be group-owned by root.","description":"The \"/etc/gshadow\" file contains group password hashes. Protection of this file is critical for system security.","checkContent":"Verify the group ownership of the \"/etc/gshadow\" file with the following command:\n\n$ stat -c \"%G %n\" /etc/gshadow \n\nroot /etc/gshadow\n\nIf \"/etc/gshadow\" file does not have a group owner of \"root\", this is a finding.","fixText":"Change the group of the file /etc/gshadow to root by running the following command:\n\n$ chgrp root /etc/gshadow","ccis":["CCI-000366"]},{"vulnId":"V-269204","ruleId":"SV-269204r1050086_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/gshadow file must be owned by root.","description":"The \"/etc/gshadow\" file contains group password hashes. Protection of this file is critical for system security.","checkContent":"Verify the ownership of the \"/etc/gshadow\" file with the following command:\n\n$ stat -c \"%U %n\" /etc/gshadow \n\nroot /etc/gshadow \n\nIf \"/etc/gshadow\" file does not have an owner of \"root\", this is a finding.","fixText":"Change the owner of the file /etc/gshadow to root by running the following command:\n\n$ chown root /etc/gshadow","ccis":["CCI-000366"]},{"vulnId":"V-269205","ruleId":"SV-269205r1050087_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/gshadow file must have mode 0000 or less permissive to prevent unauthorized access.","description":"The \"/etc/gshadow\" file contains group password hashes. Protection of this file is critical for system security.","checkContent":"Verify that the \"/etc/gshadow\" file has mode \"0000\" with the following command:\n\n$ stat -c \"%a %n\" /etc/gshadow\n\n0 /etc/gshadow\n\nIf a value of \"0\" is not returned, this is a finding.","fixText":"Change the mode of the file \"/etc/gshadow\" to \"0000\" by running the following command:\n\n$ chmod 0000 /etc/gshadow","ccis":["CCI-000366"]},{"vulnId":"V-269206","ruleId":"SV-269206r1050088_rule","severity":"medium","ruleTitle":"The graphical display manager must not be the default target on AlmaLinux OS 9 unless approved.","description":"Unnecessary service packages must not be installed to decrease the attack surface of the system. \n\nGraphical display managers have a long history of security vulnerabilities and must not be used, unless approved and documented.","checkContent":"Verify that AlmaLinux OS 9 is configured to boot to the command line:\n\n$ systemctl get-default\n\nmulti-user.target\n\nIf the system default target is not set to \"multi-user.target\" and the information system security officer (ISSO) lacks a documented requirement for a graphical user interface, this is a finding.","fixText":"Document the requirement for a graphical user interface with the ISSO or set the default target to multi-user with the following command:\n\n$ systemctl set-default multi-user.target","ccis":["CCI-000366"]},{"vulnId":"V-269207","ruleId":"SV-269207r1050089_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable the user list at logon for graphical user interfaces.","description":"Leaving the user list enabled is a security risk since it allows anyone with physical access to the system to enumerate known user accounts without authenticated access to the system.","checkContent":"Verify that AlmaLinux OS 9 disables the user logon list for graphical user interfaces with the following command:\n\nNote: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\n$ gsettings get org.gnome.login-screen disable-user-list\ntrue\n\nIf the setting is \"false\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to disable the user list at logon for graphical user interfaces.\n\nCreate a database to contain the systemwide screensaver settings (if it does not already exist) with the following command:\n\nNote: The example below is using the database \"local\" for the system, so if the system is using another database in \"/etc/dconf/profile/user\", the file should be created under the appropriate subdirectory.\n\n$ touch /etc/dconf/db/local.d/02-login-screen\n\n[org/gnome/login-screen]\ndisable-user-list=true\n\nUpdate the system databases:\n\n$ dconf update","ccis":["CCI-000366"]},{"vulnId":"V-269208","ruleId":"SV-269208r1050090_rule","severity":"medium","ruleTitle":"All AlmaLinux OS 9 local interactive user accounts must be assigned a home directory upon creation.","description":"If local interactive users are not assigned a valid home directory, there is no place for the storage and control of files they should own.","checkContent":"Verify all local interactive users on AlmaLinux OS 9 are assigned a home directory upon creation with the following command:\n\n$ grep CREATE_HOME /etc/login.defs\n\nCREATE_HOME yes\n\nIf the value for \"CREATE_HOME\" parameter is not set to \"yes\", the line is missing, or the line is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to assign home directories to all new local interactive users by setting the \"CREATE_HOME\" parameter in \"/etc/login.defs\" to \"yes\" as follows:\n\nCREATE_HOME yes","ccis":["CCI-000366"]},{"vulnId":"V-269209","ruleId":"SV-269209r1050091_rule","severity":"medium","ruleTitle":"All AlmaLinux OS 9 local interactive user home directories defined in the /etc/passwd file must exist.","description":"If a local interactive user has a home directory defined that does not exist, the user may be given access to the / directory as the current working directory upon logon. \n\nThis could create a denial of service because the user would not be able to access their logon configuration files, and it may give them visibility to system files they normally would not be able to access.","checkContent":"Verify the assigned home directories of all interactive users on the system exist with the following command:\n\n$ pwck -r\n\nuser 'testdupe': directory '/home/testdupe' does not exist\n\nThe output should not return any interactive users.\n\nIf users home directory does not exist, this is a finding.","fixText":"Create home directories to all local interactive users that currently do not have a home directory assigned. Use the following commands to create the user home directory assigned in \"/etc/ passwd\":\n\nNote: The example will be for the user testdupe, who has a home directory of \"/home/testdupe\", a UID of \"testdupe\", and a GID of \"testdupe\" in \"/etc/passwd\":\n\n$ mkdir /home/testdupe \n$ chown testdupe /home/testdupe\n$ chgrp testdupe /home/testdupe\n$ chmod 0700 /home/testdupe","ccis":["CCI-000366"]},{"vulnId":"V-269210","ruleId":"SV-269210r1050092_rule","severity":"medium","ruleTitle":"All AlmaLinux OS 9 local interactive user home directories must be group-owned by the home directory owner's primary group.","description":"If the Group Identifier (GID) of a local interactive users home directory is not the same as the primary GID of the user, this would allow unauthorized access to the users files, and users that share the same group may not be able to access files that they legitimately should.","checkContent":"Verify the assigned home directory of all local interactive users is group-owned by that user's primary GID with the following command:\n\nNote: This may miss local interactive users that have been assigned a privileged UID. Evidence of interactive use may be obtained from a number of log files containing system logon information. The returned directory \"/home/test\" is used as an example.\n\n$ stat --format=\"%n: GID=%g (%G), UID=%u (%U), MODE=%0.4a\" $(awk -F: '($3>=1000)&&($7 !~ /nologin/){print $6}' /etc/passwd)\n\n/home/test: GID=1001 (test), UID=1001 (test), MODE=0700\n\nCheck the user's primary group with the following command:\n\n$ grep $(grep -E '^test:' /etc/passwd | awk -F: '{print $4}') /etc/group\n\ntest:x:1001:\n\nIf the user home directory referenced in \"/etc/passwd\" is not group-owned by that user's primary GID (1001 in the above example) this is a finding.","fixText":"Change the group owner of a local interactive user's home directory to the group found in \"/etc/passwd\". To change the group owner of a local interactive user's home directory, use the following command:\n\nNote: The example will be for the user \"test\", who has a home directory of \"/home/test\", and has a primary group of \"test\".\n\n$ chgrp test /home/test","ccis":["CCI-000366"]},{"vulnId":"V-269211","ruleId":"SV-269211r1050093_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent code from being executed on file systems that contain user home directories.","description":"The \"noexec\" mount option causes the system to not execute binary files. \n\nThis option must be used for mounting any file system not containing approved binary files, as they may be incompatible. \n\nExecuting files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify \"/home\" is mounted with the \"noexec\" option with the following command:\n\nNote: If a separate file system has not been created for the user home directories (user home directories are mounted under \"/\"), this is automatically a finding, as the \"noexec\" option cannot be used on the \"/\" system.\n\n$ mount | grep /home\n\n/dev/mapper/luks-10a20c46-483d-4d12-831f-5328eda18fd1 on /home type xfs (rw,noexec,nosuid,nodev,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the \"/home\" file system is mounted without the \"noexec\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"noexec\" option on the \"/home\" directory.","ccis":["CCI-000366"]},{"vulnId":"V-269212","ruleId":"SV-269212r1050094_rule","severity":"medium","ruleTitle":"A separate file system must be used for user home directories (such as /home or an equivalent).","description":"Ensuring that \"/home\" is mounted on its own partition enables the setting of more restrictive mount options, and also helps ensure that users cannot trivially fill partitions used for log or audit data storage.","checkContent":"Verify that a separate file system/partition has been created for \"/home\" with the following command:\n\n$ mount | grep /home\n\n/dev/mapper/luks-10a20c46-483d-4d12-831f-5328eda18fd1 on /home type xfs (rw,nosuid,nodev,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf a separate entry for \"/home\" is not in use, this is a finding.","fixText":"Migrate the \"/home\" directory onto a separate file system/partition.","ccis":["CCI-000366"]},{"vulnId":"V-269213","ruleId":"SV-269213r1050095_rule","severity":"medium","ruleTitle":"All AlmaLinux OS 9 local interactive users must have a home directory assigned in the /etc/passwd file.","description":"If local interactive users are not assigned a valid home directory, there is no place for the storage and control of files they should own.","checkContent":"Verify that interactive users on the system have a home directory assigned with the following command:\n \n$ awk -F: '($3>=1000)&&($7 !~ /nologin/){print $1, $6}' /etc/passwd\n\nsimon /home/simon\ntest /home/test\ntestdupe /home/testdupe\n\nInspect the output and verify that all interactive users (normally users with a UID greater that 1000) have a home directory defined.\n\nIf users home directory is not defined, this is a finding.","fixText":"Create and assign home directories to all local interactive users on AlmaLinux OS 9 that currently do not have a home directory assigned.","ccis":["CCI-000366"]},{"vulnId":"V-269214","ruleId":"SV-269214r1050096_rule","severity":"medium","ruleTitle":"Executable search paths within the initialization files of all local interactive AlmaLinux OS 9 users must only contain paths that resolve to the system default or the users home directory.","description":"The executable search path (typically the $PATH environment variable) contains a list of directories for the shell to search to find executables. If this path includes the current working directory (other than the users home directory), executables in these directories may be executed instead of system commands.\n\nThis variable is formatted as a colon-separated list of directories. If there is an empty entry, such as a leading or trailing colon or two consecutive colons, this is interpreted as the current working directory. If deviations from the default system search path for the local interactive user are required, they must be documented with the information system security officer (ISSO).","checkContent":"Verify that all local interactive user initialization file executable search path statements do not contain statements that will reference a working directory other than user home directories with the following commands:\n\n$ grep -i path= /home/*/.*\n\ngrep -i path= /home/*/.* 2>/dev/null \n/home/simon/.bashrc:    PATH=\"$HOME/.local/bin:$HOME/bin:$PATH\"\n/home/test/.bashrc:    PATH=\"$HOME/.local/bin:$HOME/bin:$PATH\"\n\nIf any local interactive user initialization files have executable search path statements that include directories outside of their home directory and is not documented with the ISSO as an operational requirement, this is a finding.","fixText":"Edit the local interactive user initialization files to change any PATH variable statements that reference directories other than their home directory.\n\nIf a local interactive user requires path variables to reference a directory owned by the application, it must be documented with the ISSO.","ccis":["CCI-000366"]},{"vulnId":"V-269215","ruleId":"SV-269215r1050097_rule","severity":"medium","ruleTitle":"All AlmaLinux OS 9 local interactive user home directories must have mode 0750 or less permissive.","description":"Excessive permissions on local interactive user home directories may allow unauthorized access to user files by other users.","checkContent":"Note: This may miss interactive users that have been assigned a privileged user identifier (UID). Evidence of interactive use may be obtained from a number of log files containing system logon information.\n\nVerify the assigned home directory of all local interactive users has a mode of \"0750\" or less permissive with the following command:\n\n$ ls -ld $(awk -F: '($3>=1000)&&($7 !~ /nologin/){print $6}' /etc/passwd)\n\ndrwx------. 2 simon simon    83 Nov 30 12:30 /home/simon\ndrwx------. 2 test  test     83 Jan 19 14:18 /home/test\ndrwx------. 2 test  testdupe 62 Jan 15 11:44 /home/testdupe\n\nIf home directories referenced in \"/etc/passwd\" do not have a mode of \"0750\" or less permissive, this is a finding.","fixText":"Change the mode of interactive user's home directories to \"0750\". To change the mode of a local interactive user's home directory, use the following command:\n\nNote: The example will be for the user \"test\".\n\n$ chmod 0750 /home/test","ccis":["CCI-000366"]},{"vulnId":"V-269216","ruleId":"SV-269216r1050098_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must not allow unattended or automatic logon via the graphical user interface.","description":"Failure to restrict system access to authenticated users negatively impacts operating system security.","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 does not allow an unattended or automatic logon to the system via a graphical user interface.\n\nCheck for the value of the \"AutomaticLoginEnable\" in the \"/etc/gdm/custom.conf\" file with the following command:\n\n$  grep -i automaticlogin /etc/gdm/custom.conf\n\n[daemon]\nAutomaticLoginEnable=false\n\nIf the value of \"AutomaticLoginEnable\" is not set to \"false\", this is a finding.","fixText":"Configure the GNOME desktop display manager to disable automatic login.\n\nSet AutomaticLoginEnable to false in the [daemon] section in /etc/gdm/custom.conf. For example:\n\n[daemon]\nAutomaticLoginEnable=false","ccis":["CCI-000366"]},{"vulnId":"V-269217","ruleId":"SV-269217r1050099_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enforce a delay of at least four seconds between logon prompts following a failed logon attempt.","description":"Increasing the time between a failed authentication attempt and prompting to re-enter credentials helps to slow a single-threaded brute force attack.\n\nSatisfies: SRG-OS-000480-GPOS-00227, SRG-OS-000480-GPOS-00226","checkContent":"Verify AlmaLinux OS 9 enforces a delay of at least four seconds between console logon prompts following a failed logon attempt with the following command:\n\n$ grep -i fail_delay /etc/login.defs\n\nFAIL_DELAY 4\n\nIf the value of \"FAIL_DELAY\" is not set to \"4\" or greater, or the line is commented out, this is a finding.","fixText":"Configure the AlmaLinux OS 9 to enforce a delay of at least four seconds between logon prompts following a failed console logon attempt.\n\nModify the \"/etc/login.defs\" file to set the \"FAIL_DELAY\" parameter to 4 or greater:\n\nFAIL_DELAY 4","ccis":["CCI-000366"]},{"vulnId":"V-269218","ruleId":"SV-269218r1050100_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not allow blank or null passwords.","description":"If an account has an empty password, anyone could log in and run commands with the privileges of that account. Accounts with empty passwords should never be used in operational environments.","checkContent":"Verify that null passwords cannot be used with the following command:\n\n$ grep -i nullok /etc/pam.d/system-auth /etc/pam.d/password-auth\n\nIf output is produced, this is a finding.\n\nIf the system administrator (SA) can demonstrate that the required configuration is contained in a PAM configuration file included or substacked from the system-auth file, this is not a finding.","fixText":"Remove any instances of the \"nullok\" option in the \"/etc/pam.d/password-auth\" and \"/etc/pam.d/system-auth\" files to prevent logons with empty passwords.\n\nNote: Manual changes to the listed file may be overwritten by the \"authselect\" program.","ccis":["CCI-000366"]},{"vulnId":"V-269219","ruleId":"SV-269219r1050101_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have accounts configured with blank or null passwords.","description":"If an account has an empty password, anyone could log in and run commands with the privileges of that account. Accounts with empty passwords should never be used in operational environments.","checkContent":"Verify that null or blank passwords cannot be used with the following command:\n\n$ awk -F: '!$2 {print $1}' /etc/shadow\n\nIf the command returns any results, this is a finding.","fixText":"Configure all accounts on AlmaLinux OS 9 to have a password or lock the account with the following commands:\n\nPerform a password reset:\n\n$ passwd [username] \n\nTo lock an account:\n\n$ passwd -l [username]","ccis":["CCI-000366"]},{"vulnId":"V-269220","ruleId":"SV-269220r1050102_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/passwd- file must be group-owned by root.","description":"The \"/etc/passwd-\" file is a backup file of \"/etc/passwd\", and as such, contains information about the users that are configured on the system. Protection of this file is critical for system security.","checkContent":"Verify the group ownership of the \"/etc/passwd-\" file with the following command:\n\n$ stat -c \"%G %n\" /etc/passwd-\n\nroot /etc/passwd-\n\nIf \"/etc/passwd-\" file does not have a group owner of \"root\", this is a finding.","fixText":"Change the group of the file /etc/passwd- to root by running the following command:\n\n$ chgrp root /etc/passwd-","ccis":["CCI-000366"]},{"vulnId":"V-269221","ruleId":"SV-269221r1050103_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/passwd- file must be owned by root.","description":"The \"/etc/passwd-\" file is a backup file of \"/etc/passwd\", and as such, contains information about the users that are configured on the system. Protection of this file is critical for system security.","checkContent":"Verify the ownership of the \"/etc/passwd-\" file with the following command:\n\n$ stat -c \"%U %n\" /etc/passwd- \n\nroot /etc/passwd- \n\nIf \"/etc/passwd-\" file does not have an owner of \"root\", this is a finding.","fixText":"Change the owner of the file /etc/passwd- to root by running the following command:\n\n$ chown root /etc/passwd-","ccis":["CCI-000366"]},{"vulnId":"V-269222","ruleId":"SV-269222r1050104_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/passwd- file must have mode 0644 or less permissive to prevent unauthorized access.","description":"The \"/etc/passwd-\" file is a backup file of \"/etc/passwd\", and as such, contains information about the users that are configured on the system. Protection of this file is critical for system security.","checkContent":"Verify that the \"/etc/passwd-\" file has mode \"0644\" or less permissive with the following command:\n\n$ stat -c \"%#a %n\" /etc/passwd-\n\n0644 /etc/passwd-\n\nIf a value of \"0644\" or less permissive is not returned, this is a finding.","fixText":"Change the mode of the file \"/etc/passwd-\" to \"0644\" by running the following command:\n\n$ chmod 0644 /etc/passwd-","ccis":["CCI-000366"]},{"vulnId":"V-269223","ruleId":"SV-269223r1050105_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/passwd file must be group-owned by root.","description":"The \"/etc/passwd\" file contains information about the users that are configured on the system. Protection of this file is critical for system security.","checkContent":"Verify the group ownership of the \"/etc/passwd\" file with the following command:\n\n$ stat -c \"%G %n\" /etc/passwd \n\nroot /etc/passwd\n\nIf \"/etc/passwd\" file does not have a group owner of \"root\", this is a finding.","fixText":"Change the group of the file /etc/passwd to root by running the following command:\n\n$ chgrp root /etc/passwd","ccis":["CCI-000366"]},{"vulnId":"V-269224","ruleId":"SV-269224r1050106_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/passwd file must be owned by root.","description":"The \"/etc/passwd\" file contains information about the users that are configured on the system. Protection of this file is critical for system security.","checkContent":"Verify the ownership of the \"/etc/passwd\" file with the following command:\n\n$ stat -c \"%U %n\" /etc/passwd\n\nroot /etc/passwd\n\nIf \"/etc/passwd\" file does not have an owner of \"root\", this is a finding.","fixText":"Change the owner of the file /etc/passwd to root by running the following command:\n\n$ chown root /etc/passwd","ccis":["CCI-000366"]},{"vulnId":"V-269225","ruleId":"SV-269225r1050107_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/passwd file must have mode 0644 or less permissive to prevent unauthorized access.","description":"If the \"/etc/passwd\" file is writable by a group-owner or the world the risk of its compromise is increased.\n\nThe file contains the list of accounts on the system and associated information, and protection of this file is critical for system security.","checkContent":"Verify that the \"/etc/passwd\" file has mode \"0644\" or less permissive with the following command:\n\n$ stat -c \"%#a %n\" /etc/passwd\n\n0644 /etc/passwd\n\nIf a value of \"0644\" or less permissive is not returned, this is a finding.","fixText":"Change the mode of the file \"/etc/passwd\" to \"0644\" by running the following command:\n\n$ chmod 0644 /etc/passwd","ccis":["CCI-000366"]},{"vulnId":"V-269226","ruleId":"SV-269226r1050108_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/shadow- file must be group-owned by root.","description":"The \"/etc/shadow-\" file is a backup file of \"/etc/shadow\", and as such, contains the list of local system accounts and password hashes. Protection of this file is critical for system security.","checkContent":"Verify the group ownership of the \"/etc/shadow-\" file with the following command:\n\n$ stat -c \"%G %n\" /etc/shadow-\n\nroot /etc/shadow-\n\nIf \"/etc/shadow-\" file does not have a group owner of \"root\", this is a finding.","fixText":"Change the group of the file /etc/shadow- to root by running the following command:\n\n$ chgrp root /etc/shadow-","ccis":["CCI-000366"]},{"vulnId":"V-269227","ruleId":"SV-269227r1050109_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/shadow- file must be owned by root.","description":"The \"/etc/shadow-\" file is a backup file of \"/etc/shadow\", and as such, contains the list of local system accounts and password hashes. Protection of this file is critical for system security.","checkContent":"Verify the ownership of the \"/etc/shadow-\" file with the following command:\n\n$ stat -c \"%U %n\" /etc/shadow- \n\nroot /etc/shadow- \n\nIf \"/etc/shadow-\" file does not have an owner of \"root\", this is a finding.","fixText":"Change the owner of the file /etc/shadow- to root by running the following command:\n\n$ chown root /etc/shadow-","ccis":["CCI-000366"]},{"vulnId":"V-269228","ruleId":"SV-269228r1050110_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/shadow- file must have mode 0000 or less permissive to prevent unauthorized access.","description":"The \"/etc/shadow-\" file is a backup file of \"/etc/shadow\", and as such, contains the list of local system accounts and password hashes. Protection of this file is critical for system security.","checkContent":"Verify that the \"/etc/shadow-\" file has mode \"0000\" with the following command:\n\n$ stat -c \"%a %n\" /etc/shadow-\n\n0 /etc/shadow-\n\nIf a value of \"0\" is not returned, this is a finding.","fixText":"Change the mode of the file \"/etc/shadow-\" to \"0000\" by running the following command:\n\n$ chmod 0000 /etc/shadow-","ccis":["CCI-000366"]},{"vulnId":"V-269229","ruleId":"SV-269229r1050111_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/shadow file must be group-owned by root.","description":"The \"/etc/shadow\" file contains the list of local system accounts and stores password hashes. Protection of this file is critical for system security.\n\nFailure to give ownership of this file to root provides the designated owner with access to sensitive information, which could weaken the system security posture.","checkContent":"Verify the group ownership of the \"/etc/shadow\" file with the following command:\n\n$ stat -c \"%G %n\" /etc/shadow \n\nroot /etc/shadow\n\nIf \"/etc/shadow\" file does not have a group owner of \"root\", this is a finding.","fixText":"Change the group of the file /etc/shadow to root by running the following command:\n\n$ chgrp root /etc/shadow","ccis":["CCI-000366"]},{"vulnId":"V-269230","ruleId":"SV-269230r1050112_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/shadow file must be owned by root.","description":"The \"/etc/shadow\" file contains the list of local system accounts and stores password hashes. Protection of this file is critical for system security. \n\nFailure to give ownership of this file to root provides the designated owner with access to sensitive information, which could weaken the system security posture.","checkContent":"Verify the ownership of the \"/etc/shadow\" file with the following command:\n\n$ stat -c \"%U %n\" /etc/shadow\n\nroot /etc/shadow\n\nIf \"/etc/shadow\" file does not have an owner of \"root\", this is a finding.","fixText":"Change the owner of the file /etc/shadow to root by running the following command:\n\n$ chown root /etc/shadow","ccis":["CCI-000366"]},{"vulnId":"V-269231","ruleId":"SV-269231r1050113_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/shadow file must have mode 0000 to prevent unauthorized access.","description":"The \"/etc/shadow\" file contains the list of local system accounts and stores password hashes. Protection of this file is critical for system security. Failure to give ownership of this file to root provides the designated owner with access to sensitive information, which could weaken the system security posture.","checkContent":"Verify that the \"/etc/shadow\" file has mode \"0000\" with the following command:\n\n$ stat -c \"%a %n\" /etc/shadow\n\n0 /etc/shadow\n\nIf a value of \"0\" is not returned, this is a finding.","fixText":"Change the mode of the file \"/etc/shadow\" to \"0000\" by running the following command:\n\n$ chmod 0000 /etc/shadow","ccis":["CCI-000366"]},{"vulnId":"V-269232","ruleId":"SV-269232r1101826_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must restrict privilege elevation to authorized personnel.","description":"If the \"sudoers\" file is not configured correctly, any user defined on the system can initiate privileged actions on the target system.","checkContent":"Verify AlmaLinux OS 9 restricts privilege elevation to authorized personnel with the following command:\n\n$ sudo grep -iwR 'ALL' /etc/sudoers /etc/sudoers.d/ | grep -v '#'\n\n/etc/sudoers:root ALL=(ALL) ALL\n/etc/sudoers:%wheel ALL=(ALL) NOPASSWD: ALL\n\nIf the either of the following entries are returned, including their NOPASSWD equivalents, this is a finding:\nALL     ALL=(ALL) ALL\nALL     ALL=(ALL:ALL) ALL","fixText":"Remove the following entries from the /etc/sudoers file or configuration files under /etc/sudoers.d/ (including NOPASSWD equivalents):\n\nALL     ALL=(ALL) ALL\nALL     ALL=(ALL:ALL) ALL","ccis":["CCI-000366"]},{"vulnId":"V-269233","ruleId":"SV-269233r1050115_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must use the invoking user's password for privilege escalation when using \"sudo\".","description":"If the rootpw, targetpw, or runaspw flags are defined and not disabled, by default the operating system will prompt the invoking user for the \"root\" user password.","checkContent":"Verify that the sudoers security policy is configured to use the invoking user's password for privilege escalation with the following command:\n\n$ grep -E '(!rootpw|!targetpw|!runaspw)' /etc/sudoers /etc/sudoers.d/* | grep -v '#'\n\n/etc/sudoers.d/01_stig:Defaults !targetpw\n/etc/sudoers.d/01_stig:Defaults !rootpw\n/etc/sudoers.d/01_stig:Defaults !runaspw\n\nIf no results are returned, this is a finding.\n\nIf results are returned from more than one file location, this is a finding.\n\nIf \"Defaults !targetpw\" is not defined, this is a finding.\n\nIf \"Defaults !rootpw\" is not defined, this is a finding.\n\nIf \"Defaults !runaspw\" is not defined, this is a finding.","fixText":"Define the following in the Defaults section of the /etc/sudoers file or a single configuration file in the /etc/sudoers.d/ directory:\n\nDefaults !targetpw\nDefaults !rootpw\nDefaults !runaspw","ccis":["CCI-000366"]},{"vulnId":"V-269234","ruleId":"SV-269234r1050116_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must set the umask value to 077 for all local interactive user accounts.","description":"Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.\n\nWith a UMASK of 077, files will be created with 0600 permissions (owner read/write only) and directories will have 0700 permissions (owner read/write/execute only).","checkContent":"Verify that the default umask for all local interactive users is \"077\".\n\nIdentify the locations of all local interactive user home directories by looking at the \"/etc/passwd\" file.\n\nCheck all local interactive user initialization files for interactive users with the following command:\n\nNote: The example is for a system that is configured to create users home directories in the \"/home\" directory.\n\n$ grep -ir umask /home | grep -v '.bash_history'\n\nIf any local interactive user initialization files are found to have a umask statement that sets a value less restrictive than \"077\", this is a finding.","fixText":"Remove the umask statement from all local interactive user's initialization files. \n\nIf the account is for an application, the requirement for a umask less restrictive than \"077\" can be documented with the information system security officer (ISSO), but the user agreement for access to the account must specify that the local interactive user must first log on to their account and then switch the user to the application account with the correct option to gain the account's environment variables.","ccis":["CCI-000366"]},{"vulnId":"V-269235","ruleId":"SV-269235r1050117_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.","description":"Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.\n\nWith a UMASK of 077, files will be created with 0600 permissions (owner read/write only) and directories will have 0700 permissions (owner read/write/execute only).","checkContent":"Verify AlmaLinux OS 9 defines default permissions for all authenticated users in such a way that the user can only read and modify their own files with the following command:\n\nNote: If the value of the \"UMASK\" parameter is set to \"000\" in the \"/etc/login.defs\" file, the severity is raised to a CAT I.\n\n$ grep UMASK /etc/login.defs\n\nUMASK 077\n\nIf the value for the \"UMASK\" parameter is not \"077\", or the \"UMASK\" parameter is missing or is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to define default permissions for all authenticated users in such a way that the user can only read and modify their own files.\n\nAdd or edit the lines for the \"UMASK\" parameter in the \"/etc/login.defs\" file to \"077\":\n\nUMASK 077","ccis":["CCI-000366"]},{"vulnId":"V-269236","ruleId":"SV-269236r1050118_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must define default permissions for PAM users.","description":"Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.\n\nWith a UMASK of 077, files will be created with 0600 permissions (owner read/write only) and directories will have 0700 permissions (owner read/write/execute only).","checkContent":"Verify that the \"pam_umask\" module is enabled with the following command:\n\n$ grep -i umask /etc/pam.d/*\n\n/etc/pam.d/postlogin:session optional pam_umask.so silent umask=0022\n\nIf a \"pam_umask.so\" line is not returned, this is a finding.\n\nIf the \"umask\" setting is set to anything other than \"0077\", this is a finding.\n\nNote: If the \"umask\" setting is not found, it will use the default UMASK entry in /etc/login.defs.","fixText":"Configure AlmaLinux OS 9 to define default permissions for all authenticated users so the user can only read and modify their own files.\n\nAdd or edit the following line at the top of /etc/pam.d/postlogin:\n\nsession     optional     pam_umask.so silent","ccis":["CCI-000366"]},{"vulnId":"V-269237","ruleId":"SV-269237r1050119_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must define default permissions for logon and nonlogon shells.","description":"Setting the most restrictive default permissions ensures that when new accounts are created they do not have unnecessary access.\n\nWith a UMASK of 077, files will be created with 0600 permissions (owner read/write only) and directories will have 0700 permissions (owner read/write/execute only).","checkContent":"Verify that the \"umask\" setting for installed shells is \"077\".\n\nNote: If the value of the \"umask\" parameter is set to \"000\", the severity is raised to a CAT I.\n\n$ grep -ir umask /etc/profile* /etc/bashrc* /etc/csh*\n\n/etc/csh.cshrc:    umask 077\n\nIf the \"umask\" parameter is set to anything other than \"077\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to define default permissions for all authenticated users in such a way that the user can only read and modify their own files.\n\nChange any found \"umask\" parameters in the \"/etc/bashrc*\", \"/etc/csh*\", and \"/etc/profile*\" files to \"077\":\n\numask 077","ccis":["CCI-000366"]},{"vulnId":"V-269238","ruleId":"SV-269238r1050120_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have unauthorized accounts.","description":"Accounts providing no operational purpose provide additional opportunities for system compromise. Unnecessary accounts include user accounts for individuals not requiring access to the system and application accounts for applications not installed on the system.","checkContent":"Verify that there are no unauthorized interactive user accounts with the following command:\n\n$ cat /etc/passwd\n\nroot:x:0:0:root:/root:/bin/bash\n...\nsync:x:5:0:sync:/sbin:/bin/sync\nshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\nhalt:x:7:0:halt:/sbin:/sbin/halt\nsimon:x:1000:1000::/home/simon:/bin/bash\n\nInteractive user accounts, generally will have a user identifier (UID) of 1000 or greater, a home directory in a specific partition, and an interactive shell.\n\nObtain the list of interactive user accounts authorized to be on the system from the system administrator or information system security officer (ISSO) and compare it to the list of local interactive user accounts on the system.\n\nIf there are unauthorized local user accounts on the system, this is a finding.","fixText":"Remove unauthorized local interactive user accounts with the following command where <unauthorized_user> is the unauthorized account:\n\n$ userdel  -rf <unauthorized_user>","ccis":["CCI-000366"]},{"vulnId":"V-269239","ruleId":"SV-269239r1050121_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must be configured so that the file integrity tool verifies Access Control Lists (ACLs).","description":"ACLs can provide permissions beyond those permitted through the file mode and must be verified by the file integrity tools.","checkContent":"Verify that that AIDE is verifying ACLs with the following command:\n\n$ grep acl /etc/aide.conf \n\nAll= p+i+n+u+g+s+m+S+sha512+acl+xattrs+selinux\n\nIf the \"acl\" rule is not being used on all uncommented selection lines in the \"/etc/aide.conf\" file, or ACLs are not being checked by another file integrity tool, this is a finding.","fixText":"Configure the file integrity tool to check file and directory ACLs. \n\nIf AIDE is installed, ensure the \"acl\" rule is present on all uncommented file and directory selection lists.","ccis":["CCI-000366"]},{"vulnId":"V-269240","ruleId":"SV-269240r1050122_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must use a file integrity tool that is configured to use FIPS 140-3-approved cryptographic hashes for validating file contents and directories.","description":"File integrity tools use cryptographic hashes for verifying file contents and directories have not been altered. These hashes must be FIPS 140-3 approved cryptographic hashes.","checkContent":"Verify that AIDE is configured to use FIPS 140-3 file hashing with the following command:\n\n$ grep sha512 /etc/aide.conf \n\nAll=p+i+n+u+g+s+m+S+sha512+acl+xattrs+selinux\n\nIf the \"sha512\" rule is not being used on all uncommented selection lines in the \"/etc/aide.conf\" file, or another file integrity tool is not using FIPS 140-3-approved cryptographic hashes for validating file contents and directories, this is a finding.","fixText":"Configure the file integrity tool to use FIPS 140-3 cryptographic hashes for validating file and directory contents. \n\nIf AIDE is installed, ensure the \"sha512\" rule is present on all uncommented file and directory selection lists. Exclude any log files, or files expected to change frequently, to reduce unnecessary notifications.","ccis":["CCI-000366"]},{"vulnId":"V-269241","ruleId":"SV-269241r1050123_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must be configured so that the file integrity tool verifies extended attributes.","description":"Extended attributes in file systems are used to contain arbitrary data and file metadata with security implications.","checkContent":"Verify that AIDE is configured to verify extended attributes with the following command:\n\n$ grep xattrs /etc/aide.conf \n\nAll= p+i+n+u+g+s+m+S+sha512+acl+xattrs+selinux\n\nIf the \"xattrs\" rule is not being used on all uncommented selection lines in the \"/etc/aide.conf\" file, or extended attributes are not being checked by another file integrity tool, this is a finding.\n\nIf the \"acl\" rule is not being used on all uncommented selection lines in the \"/etc/aide.conf\" file, or ACLs are not being checked by another file integrity tool, this is a finding.","fixText":"Configure the file integrity tool to check file and directory extended attributes. \n\nIf AIDE is installed, ensure the \"xattrs\" rule is present on all uncommented file and directory selection lists.","ccis":["CCI-000366"]},{"vulnId":"V-269242","ruleId":"SV-269242r1050124_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent the use of dictionary words for passwords.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. \n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.","checkContent":"Verify AlmaLinux OS 9 prevents the use of dictionary words for passwords with the following command:\n\n$ grep -r dictcheck /etc/security/pwquality.conf*\n\n/etc/security/pwquality.conf.d/stig.conf:dictcheck = 1\n\nIf the value of \"dictcheck\" is not \"1\" , is not set, is commented out, or if conflicting results are returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to prevent the use of dictionary words for passwords.\n\nAdd or update the following line in the \"/etc/security/pwquality.conf\" file or a configuration file in the \"/etc/security/pwquality.conf.d/\" directory:\n\ndictcheck = 1\n\nRemove any configurations that conflict with the above value.","ccis":["CCI-000366"]},{"vulnId":"V-269243","ruleId":"SV-269243r1050125_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not accept router advertisements on all IPv6 interfaces.","description":"An illicit router advertisement message could result in a man-in-the-middle attack.","checkContent":"Note: If IPv6 is disabled on the system, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 does not accept router advertisements on any IPv6 interfaces, unless the system is a router.\n\nDetermine if router advertisements are not accepted by using the following command:\n\n$ sysctl -a | grep 'accept_ra '\n\nnet.ipv6.conf.all.accept_ra = 1\nnet.ipv6.conf.default.accept_ra = 1\nnet.ipv6.conf.enp1s0.accept_ra = 0\nnet.ipv6.conf.lo.accept_ra = 1\n\nIf any of the returned lines are not set to \"0\" and it is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"Configure AlmaLinux OS 9 to not accept router advertisements on all IPv6 interfaces unless the system is a router.\n\nCreate a numbered *.conf file in /etc/sysctl.d/ with the following content:\n\nnet.ipv6.conf.all.accept_ra = 0\nnet.ipv6.conf.default.accept_ra = 0\nnet.ipv6.conf.lo.accept_ra = 0\n\nThe system configuration files need to be reloaded for the changes to take effect. To reload the contents of the files, run the following command:\n\n$ sysctl –system","ccis":["CCI-000366"]},{"vulnId":"V-269244","ruleId":"SV-269244r1050126_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must ignore Internet Control Message Protocol (ICMP) redirect messages.","description":"ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack.\n\nThis feature of the IP protocol has few legitimate uses. It should be disabled unless absolutely required.","checkContent":"Verify AlmaLinux OS 9 will not accept ICMP redirect messages.\n\nCheck the value of the \"accept_redirects\" variables with the following command:\n\n$ sysctl -a | grep accept_redirects\n\nnet.ipv4.conf.all.accept_redirects = 0\nnet.ipv4.conf.default.accept_redirects = 0\nnet.ipv4.conf.enp1s0.accept_redirects = 0\nnet.ipv4.conf.lo.accept_redirects = 0\nnet.ipv6.conf.all.accept_redirects = 0\nnet.ipv6.conf.default.accept_redirects = 0\nnet.ipv6.conf.enp1s0.accept_redirects = 0\nnet.ipv6.conf.lo.accept_redirects = 0\n\nIf the returned lines do not all have a value of \"0\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to ignore ICMP redirect messages.\n\nCreate a numbered *.conf file in /etc/sysctl.d/ with the following content:\n\nnet.ipv4.conf.all.accept_redirects = 0\nnet.ipv4.conf.default.accept_redirects = 0\nnet.ipv4.conf.lo.accept_redirects = 0\nnet.ipv6.conf.all.accept_redirects = 0\nnet.ipv6.conf.default.accept_redirects = 0\nnet.ipv6.conf.lo.accept_redirects = 0\n\nThe system configuration files need to be reloaded for the changes to take effect. To reload the contents of the files, run the following command:\n\n$ sysctl –system","ccis":["CCI-000366"]},{"vulnId":"V-269245","ruleId":"SV-269245r1050613_rule","severity":"medium","ruleTitle":"The firewalld service on AlmaLinux OS 9 must be active.","description":"\"Firewalld\" provides an easy and effective way to block/limit remote access to the system via ports, services, and protocols.\n\nRemote access services, such as those providing remote access to network devices and information systems, which lack automated control capabilities, increase risk and make remote user access management difficult at best.\n\nRemote access is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nAlmaLinux OS 9 functionality (e.g., SSH) must be capable of taking enforcement action if the audit reveals unauthorized activity. Automated control of remote access sessions allows organizations to ensure ongoing compliance with remote access policies by enforcing connection rules of remote access applications on a variety of information system components (e.g., servers, workstations, notebook computers, smartphones, and tablets).\n\nSatisfies: SRG-OS-000480-GPOS-00232, SRG-OS-000096-GPOS-00050, SRG-OS-000297-GPOS-00115","checkContent":"Verify that \"firewalld\" is active with the following command:\n\n$ systemctl is-active firewalld \n\nactive\n\nIf the firewalld service is not active, this is a finding.","fixText":"Enable the firewalld service using the following command:\n\n$ systemctl enable --now firewalld","ccis":["CCI-000366","CCI-000382","CCI-002314"]},{"vulnId":"V-269246","ruleId":"SV-269246r1050780_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 firewall must employ a deny-all, allow-by-exception policy for allowing connections to other systems.","description":"Failure to restrict network connectivity only to authorized systems permits inbound connections from malicious systems. It also permits outbound connections that may facilitate exfiltration of DOD data.\n\nAlmaLinux OS 9 incorporates the \"firewalld\" daemon, which allows for many different configurations. One of these configurations is zones. Zones can be used to a deny-all, allow-by-exception approach. The default \"drop\" zone will drop all incoming network packets unless it is explicitly allowed by the configuration file or is related to an outgoing network connection.","checkContent":"Verify the AlmaLinux OS 9 \"firewalld\" is configured to employ a deny-all, allow-by-exception policy for allowing connections to other systems.\n\nFirst ensure firewalld is running:\n\n$  firewall-cmd --state\n\nrunning\n\nNext, get the active zones:\n\n$ firewall-cmd --get-active-zones\n\npublic\n  interfaces: enp1s0\n\nCheck the target of the zones returned from the previous command:\n\n$ firewall-cmd --info-zone=public | grep target\n\n   target: DROP\n\nCheck the runtime and permanent rules match:\n\n$ firewall-cmd --permanent --info-zone=public | grep target\n\n   target: DROP\n\nIf no zones are active on the AlmaLinux OS 9 interfaces or if runtime and permanent targets are set to a different option other than \"DROP\", this is a finding.","fixText":"Configure the \"firewalld\" daemon to employ a deny-all, allow-by-exception.\n\nStart by adding the exceptions that are required for mission functionality to the \"drop\" zone. If SSH access on port 22 is needed for example, run the following command:\n\n$ firewall-cmd --permanent --add-service=ssh --zone=drop\n\nSet the default zone to the \"drop\" zone:\n\n$ firewall-cmd --set-default-zone=drop\n\nNote: This is a runtime and a permanent change.\n\nAdd any interfaces to the newly modified \"drop\" zone:\n\n$ firewall-cmd --permanent --zone=drop --change-interface=enp1s0\n\nReload the firewall rules for changes to take effect:\n\n$ firewall-cmd --reload\n\nCheck zones and interfaces:\n\n$ firewall-cmd --get-active-zones\n\ndrop\n  interfaces: enp1s0\n\nCheck new default zone's target is set to \"DROP\":\n\n$ firewall-cmd --permanent --info-zone=drop | grep target\n\n  target: DROP\n\nThe same outcome is achieved by creating a new zone, for example:\n\n$ firewall-cmd --permanent --new-zone=stig\n$ firewall-cmd --reload\n$ firewall-cmd --permanent --change-interface=enp1s0 --zone=stig \n$ firewall-cmd --permanent --add-service=ssh --zone=stig\n$ firewall-cmd --permanent --set-target=DROP --zone=stig\n$ firewall-cmd --set-default-zone=stig","ccis":["CCI-000366"]},{"vulnId":"V-269247","ruleId":"SV-269247r1050129_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must limit the number of bogus Internet Control Message Protocol (ICMP) response errors logs.","description":"Some routers will send responses to broadcast frames that violate RFC-1122, which fills up a log file system with many useless error messages. An attacker may take advantage of this and attempt to flood the logs with bogus error logs. Ignoring bogus ICMP error responses reduces log size, although some activity would not be logged.","checkContent":"Verify AlmaLinux OS 9 ignores bogus ICMP error responses with the following command:\n\n$ sysctl net.ipv4.icmp_ignore_bogus_error_responses \n\nnet.ipv4.icmp_ignore_bogus_error_responses = 1\n\nIf the returned line does not have a value of \"1\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to use reverse path filtering on all IP interfaces.\n\nCreate a numbered *.conf file in /etc/sysctl.d/ with the following content:\n\nnet.ipv4.icmp_ignore_bogus_error_responses = 1\n\nThe system configuration files need to be reloaded for the changes to take effect. To reload the contents of the files, run the following command:\n\n$ sysctl --system","ccis":["CCI-000366"]},{"vulnId":"V-269248","ruleId":"SV-269248r1050130_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not respond to Internet Control Message Protocol (ICMP) echoes sent to a broadcast address.","description":"Responding to broadcast (ICMP) echoes facilitates network mapping and provides a vector for amplification attacks.\n\nIgnoring ICMP echo requests (pings) sent to broadcast or multicast addresses makes the system slightly more difficult to enumerate on the network.","checkContent":"Verify AlmaLinux OS 9 does not respond to ICMP echoes sent to a broadcast address with the following command:\n\n$ sysctl net.ipv4.icmp_echo_ignore_broadcasts\n\nnet.ipv4.icmp_echo_ignore_broadcasts = 1\n\nIf the returned line does not have a value of \"1\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to use reverse path filtering on all IP interfaces.\n\nCreate a numbered *.conf file in /etc/sysctl.d/ with the following content:\n\nnet.ipv4.icmp_echo_ignore_broadcasts = 1\n\nThe system configuration files need to be reloaded for the changes to take effect. To reload the contents of the files, run the following command:\n\n$ sysctl –system","ccis":["CCI-000366"]},{"vulnId":"V-269249","ruleId":"SV-269249r1050131_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not enable IP packet forwarding unless the system is a router.","description":"Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this capability is used when not required, system network information may be unnecessarily transmitted across the network.","checkContent":"Verify AlmaLinux OS 9 is not performing IP packet forwarding, unless the system is a router.\n\nCheck that IP forwarding is disabled using the following command:\n\n$ sysctl -a | grep -E '\\.forwarding'\n\nnet.ipv4.conf.all.forwarding = 0\nnet.ipv4.conf.default.forwarding = 0\nnet.ipv4.conf.enp1s0.forwarding = 0\nnet.ipv4.conf.lo.forwarding = 0\nnet.ipv6.conf.all.forwarding = 0\nnet.ipv6.conf.default.forwarding = 0\nnet.ipv6.conf.enp1s0.forwarding = 0\nnet.ipv6.conf.lo.forwarding = 0\n\nIf any of the returned lines are not set to \"0\" and it is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"Configure AlmaLinux OS 9 to not allow IP packet forwarding, unless the system is a router.\n\nCreate a numbered *.conf file in /etc/sysctl.d/ with the following content:\n\nnet.ipv4.conf.all.forwarding = 0\nnet.ipv4.conf.default.forwarding = 0\nnet.ipv4.conf.lo.forwarding = 0\nnet.ipv6.conf.all.forwarding = 0\nnet.ipv6.conf.default.forwarding = 0\nnet.ipv6.conf.lo.forwarding = 0\n\nThe system configuration files need to be reloaded for the changes to take effect. To reload the contents of the files, run the following command:\n\n$ sysctl –system","ccis":["CCI-000366"]},{"vulnId":"V-269250","ruleId":"SV-269250r1050132_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have unauthorized IP tunnels configured.","description":"IP tunneling mechanisms can be used to bypass network filtering. If tunneling is required, it must be documented with the information system security officer (ISSO).","checkContent":"Verify that AlmaLinux OS 9 does not have unauthorized IP tunnels configured.\n\nDetermine if the \"IPsec\" service is active with the following command:\n\n$ systemctl status ipsec\n\nipsec.service - Internet Key Exchange (IKE) Protocol Daemon for IPsec\n     Loaded: loaded (/usr/lib/systemd/system/ipsec.service; disabled; preset: disabled)\n     Active: inactive (dead)\n\nIf the \"IPsec\" service is active, check for configured IPsec connections (\"conn\"), with the following command:\n\n$ grep -ri conn /etc/ipsec.conf /etc/ipsec.d/ | grep -v '#'\n\nVerify any returned results are documented with the ISSO.\n\nIf the IPsec tunnels are active and not approved, this is a finding.","fixText":"Remove all unapproved tunnels from the system, or document them with the ISSO.","ccis":["CCI-000366"]},{"vulnId":"V-269251","ruleId":"SV-269251r1050133_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must log packets with impossible addresses.","description":"The presence of \"martian\" packets (which have impossible addresses) as well as spoofed packets, source-routed packets, and redirects could be a sign of nefarious network activity. Logging these packets enables this activity to be detected.","checkContent":"Verify AlmaLinux OS 9 logs martian packets.\n\nCheck the value of the \"log_martians\" variables with the following command:\n\n$ sysctl -a | grep log_martians\n\nnet.ipv4.conf.all.log_martians = 1\nnet.ipv4.conf.default.log_martians = 1\nnet.ipv4.conf.enp1s0.log_martians = 1\nnet.ipv4.conf.lo.log_martians = 1\n\nIf the returned lines do not all have a value of \"1\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to log martian packets.\n\nCreate a numbered *.conf file in /etc/sysctl.d/ with the following content:\n\nnet.ipv4.conf.all.log_martians = 1\nnet.ipv4.conf.default.log_martians = 1\nnet.ipv4.conf.lo.log_martians = 1\n\nThe system configuration files need to be reloaded for the changes to take effect. To reload the contents of the files, run the following command:\n\n$ sysctl --system","ccis":["CCI-000366"]},{"vulnId":"V-269252","ruleId":"SV-269252r1050134_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must be configured to prevent unrestricted mail relaying.","description":"If unrestricted mail relaying is permitted, unauthorized senders could use this host as a mail relay for the purpose of sending spam or other unauthorized activity.","checkContent":"Note: If postfix is not installed, this is Not Applicable.\n\nVerify AlmaLinux OS 9 is configured to prevent unrestricted mail relaying with the following command:\n\n$ postconf -n smtpd_client_restrictions \n\nsmtpd_client_restrictions = permit_mynetworks,reject \n\nIf the \"smtpd_client_restrictions\" parameter contains any entries other than \"permit_mynetworks\" and \"reject\", and the additional entries have not been documented with the information system security officer (ISSO), this is a finding.","fixText":"Modify the postfix configuration file to restrict client connections to the local network with the following command:\n\n$ postconf -e 'smtpd_client_restrictions = permit_mynetworks,reject'","ccis":["CCI-000366"]},{"vulnId":"V-269253","ruleId":"SV-269253r1101817_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the nss-tools package installed.","description":"Network Security Services (NSS) is a set of libraries designed to support cross-platform development of security-enabled client and server applications. Install the \"nss-tools\" package to install command-line tools to manipulate the NSS certificate and key database.","checkContent":"Verify that AlmaLinux OS 9 has the FIPS-validated nss-tools package installed with the following command:\n\n$ dnf list --installed nss-tools\n\nInstalled Packages\nnss-tools.x86_64       3.90.0-6.el9_2.tuxcare.1                @@commandline\n\nIf the TuxCare version of the \"nss-tools\" package is not installed, this is a finding.","fixText":"The nss-tools package can be installed with the following command:\n \n$ dnf install nss-tools","ccis":["CCI-000366"]},{"vulnId":"V-269254","ruleId":"SV-269254r1050136_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 network interfaces must not be in promiscuous mode.","description":"Network interfaces in promiscuous mode allow for the capture of all network traffic visible to the system. If unauthorized individuals can access these applications, it may allow them to collect information such as logon IDs, passwords, and key exchanges between systems.\n\nIf the system is being used to perform a network troubleshooting function, the use of these tools must be documented with the information system security officer (ISSO) and restricted to only authorized personnel.","checkContent":"Verify network interfaces are not in promiscuous mode with the following command:\n\n$ ip link | grep -i promisc\n\nIf network interfaces are found on the system in promiscuous mode and their use has not been approved by the ISSO and documented, this is a finding.","fixText":"Configure network interfaces to turn off promiscuous mode unless approved by the ISSO and documented.\n\nSet the promiscuous mode of an interface to off with the following command:\n\n$ ip link set dev <devicename> multicast off promisc off","ccis":["CCI-000366"]},{"vulnId":"V-269255","ruleId":"SV-269255r1050137_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must use reverse path filtering on all IP interfaces.","description":"Enabling reverse path filtering drops packets with source addresses that should not have been able to be received on the interface on which they were received. It must not be used on systems that are routers for complicated networks, but is helpful for end hosts and routers serving small networks.","checkContent":"Verify AlmaLinux OS 9 uses reverse path filtering on all IP interfaces with the following command:\n\n$ sysctl -a | grep -E '\\.rp_filter'\n\nnet.ipv4.conf.all.rp_filter = 0\nnet.ipv4.conf.default.rp_filter = 1\nnet.ipv4.conf.enp1s0.rp_filter = 1\nnet.ipv4.conf.lo.rp_filter = 1\n\nIf the returned lines do not all have a value of \"1\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to use reverse path filtering on all IP interfaces.\n\nCreate a numbered *.conf file in /etc/sysctl.d/ with the following content:\n\nnet.ipv4.conf.all.rp_filter = 1\nnet.ipv4.conf.default.rp_filter = 1\nnet.ipv4.conf.lo.rp_filter = 1\n\nThe system configuration files need to be reloaded for the changes to take effect. To reload the contents of the files, run the following command:\n\n$ sysctl --system","ccis":["CCI-000366"]},{"vulnId":"V-269256","ruleId":"SV-269256r1050138_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not send Internet Control Message Protocol (ICMP) redirects.","description":"ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table possibly revealing portions of the network topology.\n\nThe ability to send ICMP redirects is only appropriate for systems acting as routers.","checkContent":"Verify AlmaLinux OS 9 does not send ICMP redirects.\n\nCheck the value of the \"send_redirects\" variables with the following command:\n\n$ sysctl -a | grep send_redirects\n\nnet.ipv4.conf.all.send_redirects = 0\nnet.ipv4.conf.default.send_redirects = 0\nnet.ipv4.conf.enp1s0.send_redirects = 0\nnet.ipv4.conf.lo.send_redirects = 0\n\nIf the returned lines do not all have a value of \"0\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to not allow interfaces to perform ICMP redirects.\n\nCreate a numbered *.conf file in /etc/sysctl.d/ with the following content:\n\nnet.ipv4.conf.all.send_redirects = 0\nnet.ipv4.conf.default.send_redirects = 0\nnet.ipv4.conf.lo.send_redirects = 0\nEOF\n\nThe system configuration files need to be reloaded for the changes to take effect. To reload the contents of the files, run the following command:\n\n$ sysctl –system","ccis":["CCI-000366"]},{"vulnId":"V-269257","ruleId":"SV-269257r1050139_rule","severity":"medium","ruleTitle":"There must be no .shosts files on AlmaLinux OS 9.","description":"The .shosts files are used to configure host-based authentication for individual users or the system via SSH. Host-based authentication is not sufficient for preventing unauthorized access to the system, as it does not require interactive identification and authentication of a connection request, or for the use of two-factor authentication.","checkContent":"Verify there are no \".shosts\" files on AlmaLinux OS 9 with the following command:\n\n$ find / -name .shosts\n\nIf a \".shosts\" file is found, this is a finding.","fixText":"Remove any found \".shosts\" files from the system.\n\n$ rm /[path]/[to]/[file]/.shosts","ccis":["CCI-000366"]},{"vulnId":"V-269258","ruleId":"SV-269258r1050140_rule","severity":"medium","ruleTitle":"There must be no shosts.equiv files on AlmaLinux OS 9.","description":"The shosts.equiv files are used to configure host-based authentication for the system via SSH. Host-based authentication is not sufficient for preventing unauthorized access to the system, as it does not require interactive identification and authentication of a connection request, or for the use of two-factor authentication.","checkContent":"Verify there are no \"shosts.equiv\" files on AlmaLinux OS 9 with the following command:\n\n$ find / -name shosts.equiv\n\nIf a \"shosts.equiv\" file is found, this is a finding.","fixText":"Remove any found \"shosts.equiv\" files from the system.\n\n$ rm /[path]/[to]/[file]/shosts.equiv","ccis":["CCI-000366"]},{"vulnId":"V-269259","ruleId":"SV-269259r1107619_rule","severity":"medium","ruleTitle":"Alma Linux OS 9 must not accept IPv4 source-routed packets by default.","description":"Source-routed packets allow the source of the packet to suggest routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when IP forwarding is enabled and the system is functioning as a router.\n\nAccepting source-routed packets has few legitimate uses. It must be disabled unless it is absolutely required.","checkContent":"Verify AlmaLinux OS 9 will not accept source-routed packets.\n\nCheck the value of the \"accept_source_route\" variables with the following command:\n\n$ sysctl -a | grep accept_source_route\n\nnet.ipv4.conf.all.accept_source_route = 0\nnet.ipv4.conf.default.accept_source_route = 0\nnet.ipv4.conf.enp1s0.accept_source_route = 0\nnet.ipv4.conf.lo.accept_source_route = 0\nnet.ipv6.conf.all.accept_source_route = 0\nnet.ipv6.conf.default.accept_source_route = 0\nnet.ipv6.conf.enp1s0.accept_source_route = 0\nnet.ipv6.conf.lo.accept_source_route = 0\n\nIf the returned lines do not all have a value of \"0\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to ignore source-routed packets.\n\nCreate a numbered *.conf file in /etc/sysctl.d/ with the following content:\n\nnet.ipv4.conf.all.accept_source_route = 0\nnet.ipv4.conf.default.accept_source_route = 0\nnet.ipv4.conf.lo.accept_source_route = 0\nnet.ipv6.conf.all.accept_source_route = 0\nnet.ipv6.conf.default.accept_source_route = 0\nnet.ipv6.conf.lo.accept_source_route = 0\n\nThe system configuration files must be reloaded for the changes to take effect. To reload the contents of the files, run the following command:\n\n$ sysctl --system","ccis":["CCI-000366"]},{"vulnId":"V-269260","ruleId":"SV-269260r1050142_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 SSH daemon must not allow compression or must only allow compression after successful authentication.","description":"If compression is allowed in an SSH connection prior to authentication, vulnerabilities in the compression software could result in compromise of the system from an unauthenticated connection, potentially with root privileges.","checkContent":"Verify the SSH daemon performs compression after a user successfully authenticates with the following command:\n\n$ sshd -T | grep compression\n\nCompression no\n\nIf the \"Compression\" keyword is set to \"yes\", this is a finding.","fixText":"Configure the SSH daemon to not allow compression.\n\nAdd the following line to \"/etc/ssh/sshd_config\", or uncomment the line and set the value to \"delayed\" or preferably \"no\":\n\nCompression no\n\nAlternatively, add the setting to an include file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\n$ echo 'Compression no' > /etc/ssh/sshd_config.d/40-compression.conf\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-000366"]},{"vulnId":"V-269261","ruleId":"SV-269261r1050143_rule","severity":"medium","ruleTitle":"The AlmaLinux OS 9 SSH server configuration file must be group-owned by root.","description":"Service configuration files enable or disable features of their respective services, which if configured incorrectly, can lead to insecure and vulnerable configurations. Therefore, service configuration files must be owned by the correct group to prevent unauthorized changes.","checkContent":"Verify the group ownership of \"/etc/ssh/sshd_config\" and any \"/etc/ssh/sshd_config.d/*.conf\" files with the following command:\n\n$ find /etc/ssh/sshd_config /etc/ssh/sshd_config.d -exec stat -c \"%G %n\" {} \\;\n\nroot /etc/ssh/sshd_config\nroot /etc/ssh/sshd_config.d\nroot /etc/ssh/sshd_config.d/40-stig.conf\nroot /etc/ssh/sshd_config.d/50-redhat.conf\nroot /etc/ssh/sshd_config.d/clientalive.conf\n\nIf any of the files do not have a group owner of \"root\", this is a finding.","fixText":"Configure the SSHD config files to be group-owned by root with the following command:\n\n$ chgrp root /etc/ssh/sshd_config /etc/ssh/sshd_config.d/*.conf","ccis":["CCI-000366"]},{"vulnId":"V-269262","ruleId":"SV-269262r1050144_rule","severity":"medium","ruleTitle":"The AlmaLinux OS 9 SSH server configuration file must be owned by root.","description":"Service configuration files enable or disable features of their respective services, which, if configured incorrectly, can lead to insecure and vulnerable configurations. Therefore, service configuration files must be owned by the correct group to prevent unauthorized changes.","checkContent":"Verify the ownership of \"/etc/ssh/sshd_config\" and any \"/etc/ssh/sshd_config.d/*.conf\" files with the following command:\n\n$ find /etc/ssh/sshd_config /etc/ssh/sshd_config.d -exec stat -c \"%U %n\" {} \\;\n\nroot /etc/ssh/sshd_config\nroot /etc/ssh/sshd_config.d\nroot /etc/ssh/sshd_config.d/40-stig.conf\nroot /etc/ssh/sshd_config.d/50-redhat.conf\nroot /etc/ssh/sshd_config.d/clientalive.conf\n\nIf any of the files do not have an owner of \"root\", this is a finding.","fixText":"Configure the SSHD config files to be owned by root with the following command:\n\n$ chown root /etc/ssh/sshd_config /etc/ssh/sshd_config.d/*.conf","ccis":["CCI-000366"]},{"vulnId":"V-269263","ruleId":"SV-269263r1050145_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 SSH server configuration files must have mode 0600 or less permissive.","description":"Service configuration files enable or disable features of their respective services, which if configured incorrectly, can lead to insecure and vulnerable configurations. Therefore, service configuration files must be owned by the correct group to prevent unauthorized changes.","checkContent":"Verify the permissions of \"/etc/ssh/sshd_config\" and any \"/etc/ssh/sshd_config.d/*.conf\" files with the following command:\n\n$ find /etc/ssh/sshd_config /etc/ssh/sshd_config.d -exec stat -c \"%#a %n\" {} \\;\n\n600 /etc/ssh/sshd_config\n755 /etc/ssh/sshd_config.d\n600 /etc/ssh/sshd_config.d/40-stig.conf\n600 /etc/ssh/sshd_config.d/50-redhat.conf\n600 /etc/ssh/sshd_config.d/clientalive.conf\n\nIf any of the files do not have \"0600\" permissions, this is a finding.","fixText":"Configure the SSHD config files to have \"0600\" permissions with the following command:\n\n$ chmod 0600 /etc/ssh/sshd_config /etc/ssh/sshd_config.d/*.conf","ccis":["CCI-000366"]},{"vulnId":"V-269264","ruleId":"SV-269264r1050146_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not allow a noncertificate trusted host SSH logon to the system.","description":"SSH trust relationships mean a compromise on one host can allow an attacker to move trivially to other hosts.","checkContent":"Verify the operating system does not allow a noncertificate trusted host SSH logon to the system with the following command:\n\n$ sshd -T | grep hostbasedauthentication\n\nhostbasedauthentication no\n\nIf the \"HostbasedAuthentication\" keyword is not set to \"no\", this is a finding.","fixText":"Configure the AlmaLinux OS 9 SSH daemon to not allow a noncertificate trusted host SSH logon to the system with the following command:\n\nAdd the following line to \"/etc/ssh/sshd_config\", or uncomment the line and set the value to \"no\":\n\nHostbasedAuthentication no\n\nAlternatively, add the setting to an include file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\n$ echo 'HostbasedAuthentication no' > /etc/ssh/sshd_config.d/40-hostbasedauthentication.conf\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-000366"]},{"vulnId":"V-269265","ruleId":"SV-269265r1050147_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 SSH private host key files must have mode 0640 or less permissive.","description":"If an unauthorized user obtains the private SSH host key file, the host could be impersonated.","checkContent":"Verify the SSH private host key files have a mode of \"0640\" or less permissive with the following command:\n\n$ stat -c \"%#a %n\" /etc/ssh/ssh_host*key\n\n0640 /etc/ssh/ssh_host_ecdsa_key\n0640 /etc/ssh/ssh_host_rsa_key\n\nIf any private host key file has a mode more permissive than \"0640\", this is a finding.","fixText":"Configure the mode of SSH private host key files under \"/etc/ssh\" to \"0640\" with the following command:\n\n$ chmod 0640 /etc/ssh/ssh_host*key\n\nRestart the SSH daemon for the changes to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-000366"]},{"vulnId":"V-269266","ruleId":"SV-269266r1050148_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 SSH public host key files must have mode 0644 or less permissive.","description":"If a public host key file is modified by an unauthorized user, the SSH service may be compromised.\n\nWhilst public keys are publicly readable, they should not be writeable by nonowners.","checkContent":"Verify the SSH public host key files have a mode of \"0644\" or less permissive with the following command:\n\nNote: SSH public key files may be found in other directories on the system depending on the installation.\n\n$ stat -c \"%#a %n\" /etc/ssh/ssh_host*key.pub\n\n0644 /etc/ssh/ssh_host_ecdsa_key.pub\n0644 /etc/ssh/ssh_host_rsa_key.pub\n\nIf any public key has a mode more permissive than \"0644\", this is a finding.","fixText":"Change the mode of public host key files under \"/etc/ssh\" to \"0644\" with the following command:\n\n$ chmod 0644 /etc/ssh/*key.pub\n\nRestart the SSH daemon for the changes to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-000366"]},{"vulnId":"V-269267","ruleId":"SV-269267r1050149_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 SSH daemon must not allow known hosts authentication.","description":"Configuring the IgnoreUserKnownHosts setting for the SSH daemon provides additional assurance that remote login via SSH will require a password, even in the event of misconfiguration elsewhere.","checkContent":"Verify the SSH daemon does not allow known hosts authentication with the following command:\n\n$ sshd -T | grep ignoreuserknownhosts\n\nignoreuserknownhosts yes\n\nIf the value is returned as \"no\", this is a finding.","fixText":"Configure the SSH daemon to not allow known hosts authentication.\n\nAdd the following line to \"/etc/ssh/sshd_config\", or uncomment the line and set the value to \"yes\":\n\nIgnoreUserKnownHosts yes\n\nAlternatively, add the setting to an include file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\n$ echo 'IgnoreUserKnownHosts yes' > /etc/ssh/sshd_config.d/40-knownhosts.conf\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-000366"]},{"vulnId":"V-269268","ruleId":"SV-269268r1050150_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 SSH daemon must display the date and time of the last successful account logon upon an SSH logon.","description":"Providing users feedback on when account accesses last occurred facilitates user recognition and reporting of unauthorized account use.","checkContent":"Verify the SSH daemon provides users with feedback on when account accesses last occurred with the following command:\n\n$ sshd -T | grep printlastlog\n\nprintlastlog yes\n\nIf the value is returned as \"no\", this is a finding.","fixText":"Configure the SSH daemon to provide users with feedback on when account accesses last occurred.\n\nAdd the following line to \"/etc/ssh/sshd_config\", or uncomment the line and set the value to \"yes\":\n\nPrintLastLog yes\n\nAlternatively, add the setting to an include file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\n$ echo 'PrintLastLog yes' > /etc/ssh/sshd_config.d/40-lastlog.conf\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-000366"]},{"vulnId":"V-269269","ruleId":"SV-269269r1050151_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 SSH daemon must not allow rhosts authentication.","description":"SSH trust relationships mean a compromise on one host can allow an attacker to move trivially to other hosts.","checkContent":"Verify the SSH daemon does not allow rhosts authentication with the following command:\n\n$ sshd -T | grep ignorerhosts\n\nignorerhosts yes\n\nIf the \"IgnoreRhosts\" keyword is set to \"no\", this is a finding.","fixText":"Configure the SSH daemon to not allow rhosts authentication.\n\nAdd the following line to \"/etc/ssh/sshd_config\", or uncomment the line and set the value to \"yes\":\n\nIgnoreRhosts yes\n\nAlternatively, add the setting to an include file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\n$ echo 'IgnoreRhosts yes' > /etc/ssh/sshd_config.d/40-rhosts.conf\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-000366"]},{"vulnId":"V-269270","ruleId":"SV-269270r1050152_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 SSH daemon must disable remote X connections for interactive users.","description":"When X11 forwarding is enabled, there may be additional exposure to the server and client displays if the sshd proxy display is configured to listen on the wildcard address. By default, sshd binds the forwarding server to the loopback address and sets the hostname part of the DISPLAY environment variable to localhost. This prevents remote hosts from connecting to the proxy display.","checkContent":"Verify the SSH daemon does not allow X11Forwarding with the following command:\n\n$ sshd -T | grep x11forwarding\n\nx11forwarding no\n\nIf the value is returned as \"yes\" and X11 forwarding is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"Configure the SSH daemon to not allow X11 forwarding.\n\nAdd the following line to \"/etc/ssh/sshd_config\", or uncomment the line and set the value to \"no\":\n\nX11forwarding no\n\nAlternatively, add the setting to an include file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\n$ echo 'X11forwarding no' > /etc/ssh/sshd_config.d/40-x11forwarding.conf\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-000366"]},{"vulnId":"V-269271","ruleId":"SV-269271r1050153_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 SSH daemon must prevent remote hosts from connecting to the proxy display.","description":"When X11 forwarding is enabled, there may be additional exposure to the server and client displays if the sshd proxy display is configured to listen on the wildcard address. By default, sshd binds the forwarding server to the loopback address and sets the hostname part of the \"DISPLAY\" environment variable to localhost. This prevents remote hosts from connecting to the proxy display.","checkContent":"Verify the SSH daemon prevents remote hosts from connecting to the proxy display with the following command:\n\n$ sshd -T | grep x11uselocalhost\n\nx11uselocalhost yes\n\nIf the value is returned as \"no\", this is a finding.","fixText":"Configure the SSH daemon to prevent remote hosts from connecting to the proxy display.\n\nAdd the following line to \"/etc/ssh/sshd_config\", or uncomment the line and set the value to \"yes\":\n\nX11UseLocalhost yes\n\nAlternatively, add the setting to an include file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\n$ echo 'X11UseLocalhost yes' > /etc/ssh/sshd_config.d/40-x11local.conf\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-000366"]},{"vulnId":"V-269272","ruleId":"SV-269272r1050154_rule","severity":"medium","ruleTitle":"If the Trivial File Transfer Protocol (TFTP) server is required, the TFTP daemon must be configured to operate in secure mode.","description":"Restricting TFTP to a specific directory prevents remote users from copying, transferring, or overwriting system files. Using the \"-s\" option causes the TFTP service to only serve files from the given directory.","checkContent":"Note: If a TFTP server is not installed, this requirement is Not Applicable.\n\nVerify the TFTP daemon is configured to operate in secure mode.\n\nCheck if a TFTP server is installed with the following command:\n\n$ dnf list --installed tftp-server\n\nInstalled Packages\ntftp-server.x86_64        5.2-37.el9             @appstream\n\nIf a TFTP server is installed, check for the server arguments with the following command: \n\n$ systemctl cat tftp | grep ExecStart=\n\nExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot\n\nIf the \"ExecStart\" line does not have a \"-s\" option, and a subdirectory is not assigned, this is a finding.","fixText":"Configure the TFTP daemon to operate in secure mode with the following command:\n\n$ systemctl edit tftp.service\n\nInsert the following between the two sets of comments, making sure to add the \"-s\" option with a nonroot (\"/\") directory.\n\n[Service]\nExecStart=\nExecStart=/usr/sbin/in.tftpd -s /tftp","ccis":["CCI-000366"]},{"vulnId":"V-269273","ruleId":"SV-269273r1050155_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enable hardening for the Berkeley Packet Filter (BPF) just-in-time (JIT) compiler.","description":"When hardened, the extended BPF JIT compiler will randomize any kernel addresses in the BPF programs and maps, and will not expose the JIT addresses in \"/proc/kallsyms\".","checkContent":"Verify AlmaLinux OS 9 enables hardening for the BPF JIT with the following commands:\n\n$ sysctl net.core.bpf_jit_harden\n\nnet.core.bpf_jit_harden = 2\n\nIf the returned line does not have a value of \"2\", or a line is not returned, this is a finding.\n\nCheck that the configuration files are present to enable this kernel parameter.\n\n$ /usr/lib/systemd/systemd-sysctl --cat-config | egrep -v '^(#|;)' | grep -F net.core.bpf_jit_harden | tail -1\n\nnet.core.bpf_jit_harden = 2\n\nIf the network parameter \"net.core.bpf_jit_harden\" is not equal to \"2\" or nothing is returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enable hardening for the BPF JIT compiler.\n\nCreate a numbered *.conf file in /etc/sysctl.d/ with the following content:\n\nnet.core.bpf_jit_harden = 2\n\nThe system configuration files must be reloaded for the changes to take effect. To reload the contents of the files, run the following command:\n\n$ sysctl –system","ccis":["CCI-000366"]},{"vulnId":"V-269274","ruleId":"SV-269274r1050156_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 effective dconf policy must match the policy keyfiles.","description":"Unlike text-based keyfiles, the binary database is impossible to check through most automated and all manual means; therefore, to evaluate dconf configuration, both have to be true at the same time—configuration files have to be compliant, and the database needs to be more recent than those keyfiles, which gives confidence that it reflects them.","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nCheck the last modification time of the local databases, comparing it to the last modification time of the related keyfiles. The following command will check every dconf database and compare its modification time to the related system keyfiles:\n\n$ function dconf_needs_update { for db in $(find /etc/dconf/db -maxdepth 1 -type f); do db_mtime=$(stat -c %Y \"$db\"); keyfile_mtime=$(stat -c %Y \"$db\".d/* | sort -n | tail -1); if [ -n \"$db_mtime\" ] && [ -n \"$keyfile_mtime\" ] && [ \"$db_mtime\" -lt \"$keyfile_mtime\" ]; then echo \"$db needs update\"; return 1; fi; done; }; dconf_needs_update\n\nIf the command has any output, then a dconf database needs to be updated, and this is a finding.","fixText":"Update the dconf databases by running the following command:\n\n$ dconf update","ccis":["CCI-000366"]},{"vulnId":"V-269275","ruleId":"SV-269275r1050157_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must be configured so that all system device files are correctly labeled to prevent unauthorized modification.","description":"If an unauthorized or modified device is allowed to exist on the system, there is the possibility the system may perform unintended or unauthorized operations.","checkContent":"Verify that all system device files are correctly labeled to prevent unauthorized modification.\n\nList all device files on the system that are incorrectly labeled with the following commands:\n\nNote: Device files are normally found under \"/dev\", but applications may place device files in other directories and may necessitate a search of the entire system.\n\n# find /dev -context *:device_t:* \\( -type c -o -type b \\) -printf \"%p %Z\\n\"\n\n# find /dev -context *:unlabeled_t:* \\( -type c -o -type b \\) -printf \"%p %Z\\n\"\n\nNote: There are device files, such as \"/dev/vmci\", that are used when the operating system is a host virtual machine. They will not be owned by a user on the system and require the \"device_t\" label to operate. These device files are not a finding.\n\nIf there is output from either of these commands, other than already noted, this is a finding.","fixText":"Restore the SELinux policy for the affected device file from the system policy database using the following command:\n\n$ restorecon -v <device_path>\n\nSubstituting \"<device_path>\" with the path to the affected device file (from the output of the previous commands). An example device file path would be \"/dev/ttyUSB0\". If the output of the above command does not indicate that the device was relabeled to a more specific SELinux type label, then the SELinux policy of the system must be updated with more specific policy for the device class specified. If a package was used to install support for a device class, that package could be reinstalled using the following command:\n\n$ dnf reinstall <package_name>\n\nIf a package was not used to install the SELinux policy for a given device class, then it must be generated manually and provide specific type labels.","ccis":["CCI-000366"]},{"vulnId":"V-269276","ruleId":"SV-269276r1050158_rule","severity":"medium","ruleTitle":"All AlmaLinux OS 9 local initialization files must have mode 0740 or less permissive.","description":"Local initialization files are used to configure the user's shell environment upon logon. Malicious modification of these files could compromise accounts upon logon.\n\nWorld-readable \"dot files\" such as .bash_history or .netrc can reveal plaintext credentials, such files should be further protected (e.g., 0600).","checkContent":"Verify that all local initialization files have a mode of \"0740\" or less permissive with the following command:\n\nNote: The example will be for the \"testuser\" account, who has a home directory of \"/home/testuser\".\n\n$ find /home/testuser/.[^.]* -maxdepth 0 -perm -740 -exec stat -c \"%a %n\" {} \\; | more\n\n755 /home/testuser/.cache\n755 /home/testuser/.mozilla\n\nIf any local initialization files have a mode more permissive than \"0740\", this is a finding.","fixText":"Set the mode of the local initialization files to \"0740\" with the following command:\n\nNote: The example will be for the \"testuser\" account, who has a home directory of \"/home/testuser\".\n\n$ chmod 0740 /home/testuser/.<INIT_FILE>","ccis":["CCI-000366"]},{"vulnId":"V-269277","ruleId":"SV-269277r1050159_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the gnutls-utils package installed.","description":"GnuTLS is a secure communications library implementing the SSL, TLS, and DTLS protocols and technologies around them. It provides a simple C language application programming interface (API) to access the secure communications protocols as well as APIs to parse and write X.509, PKCS #12, OpenPGP, and other required structures. This package contains command line TLS client and server and certificate manipulation tools.","checkContent":"Verify that AlmaLinux OS 9 has the gnutls-utils package installed with the following command:\n\n$ dnf list --installed gnutls-utils\n\nInstalled Packages\ngnutls-utils.x86_64            3.7.6-23.el9_2.tuxcare.3                     @@commandline\n\nIf the \"gnutls-utils\" package is not installed, this is a finding.","fixText":"The gnutls-utils package can be installed with the following command:\n \n$ dnf install gnutls-utils","ccis":["CCI-000366"]},{"vulnId":"V-269278","ruleId":"SV-269278r1050160_rule","severity":"medium","ruleTitle":"The kdump service on AlmaLinux OS 9 must be disabled.","description":"Kernel core dumps may contain the full contents of system memory at the time of the crash. Kernel core dumps consume a considerable amount of disk space and may result in denial of service by exhausting the available space on the target file system partition.\n\nUnless the system is used for kernel development or testing, there is little need to run the kdump service.","checkContent":"Verify that the kdump service is disabled in system boot configuration with the following command:\n\n$ systemctl is-enabled  kdump  \n\nmasked \n\nVerify that the kdump service is not active (i.e., not running) through current runtime configuration with the following command:\n\n$ systemctl is-active kdump \n\ninactive \n\nVerify that the kdump service is masked with the following command:\n\n$ systemctl show  kdump  | grep \"LoadState\\|UnitFileState\" \n\nLoadState=masked \nUnitFileState=masked \n\nIf the \"kdump\" service is loaded or active, and is not masked, this is a finding.","fixText":"Disable the kdump service with the following command:\n\n$ systemctl mask --now kdump","ccis":["CCI-000366"]},{"vulnId":"V-269279","ruleId":"SV-269279r1050161_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable the ability of a user to restart the system from the login screen.","description":"A user who is at the console can reboot the system at the login screen. If restart or shutdown buttons are pressed at the login screen, this can create the risk of short-term loss of availability of systems due to reboot.","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, Gnome Shell. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 disables a user's ability to restart the system with the following command:\n\n$ grep -R disable-restart-buttons /etc/dconf/db/*\n\n/etc/dconf/db/distro.d/20-authselect:disable-restart-buttons='true'\n\nIf the \"disable-restart-button\" setting is not set to \"true\", is missing or commented out from the dconf database files, this is a finding.","fixText":"Configure AlmaLinux OS 9 to disable a user's ability to restart the system.\n\nAdd or update the [org/gnome/settings-daemon/] section of the /etc/dconf/db/local.d/00-security-settings\" database file and add or update the following lines:\n\n[org/gnome/login-screen]\ndisable-restart-buttons=true\n\nThen update the dconf system databases:\n\n$ dconf update","ccis":["CCI-000366"]},{"vulnId":"V-269280","ruleId":"SV-269280r1050162_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent a user from overriding the disable-restart-buttons setting for the graphical user interface.","description":"A user who is at the console can reboot the system at the login screen. If restart or shutdown buttons are pressed at the login screen, this can create the risk of short-term loss of availability of systems due to reboot.","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 prevents a user from overriding the disable-restart-buttons setting for graphical user interfaces. \n\nDetermine which profile the system database is using with the following command:\n\n$ grep system-db /etc/dconf/profile/user\n\nsystem-db:local\n\nCheck that graphical settings are locked from nonprivileged user modification with the following command:\n\nNote: The example below is using the database \"local\" for the system, so the path is \"/etc/dconf/db/local.d\". This path must be modified if a database other than \"local\" is being used.\n\n$ grep disable-restart-buttons /etc/dconf/db/local.d/locks/* \n\n/org/gnome/login-screen/disable-restart-buttons\n\nIf the command does not return at least the example result, this is a finding.","fixText":"Configure AlmaLinux OS 9 to prevent a user from overriding the disable-restart-buttons setting for graphical user interfaces. \n\nCreate a database to contain the systemwide graphical user logon settings (if it does not already exist) with the following command:\n\n$ touch /etc/dconf/db/local.d/locks/session\n\nAdd the following line to prevent nonprivileged users from modifying it:\n\n/org/gnome/login-screen/disable-restart-buttons\n\nRun the following command to update the database:\n\n$ dconf update","ccis":["CCI-000366"]},{"vulnId":"V-269281","ruleId":"SV-269281r1050163_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent special devices on file systems that are used with removable media.","description":"The \"nodev\" mount option causes the system not to interpret character or block special devices. Executing character or blocking special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify file systems that are used for removable media are mounted with the \"nodev\" option with the following command:\n\n$ cat /etc/fstab\n\nUUID=0cb43738-b102-48f8-9174-061d8ee537b8 /mnt/usbdrive vfat noauto,owner,ro,nosuid,nodev,noexec 0 0\n\nIf a file system found in \"/etc/fstab\" refers to removable media and it does not have the \"nodev\" option set, this is a finding.","fixText":"Configure the \"/etc/fstab\" to use the \"nodev\" option on file systems that are associated with removable media.","ccis":["CCI-000366"]},{"vulnId":"V-269282","ruleId":"SV-269282r1050164_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent code from being executed on file systems that are used with removable media.","description":"The \"noexec\" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify file systems that are used for removable media are mounted with the \"noexec\" option with the following command:\n\n$ cat /etc/fstab\n\nUUID=0cb43738-b102-48f8-9174-061d8ee537b8 /mnt/usbdrive vfat noauto,owner,ro,nosuid,nodev,noexec 0 0\n\nIf a file system found in \"/etc/fstab\" refers to removable media and it does not have the \"noexec\" option set, this is a finding.","fixText":"Configure the \"/etc/fstab\" to use the \"noexec\" option on file systems that are associated with removable media.","ccis":["CCI-000366"]},{"vulnId":"V-269283","ruleId":"SV-269283r1050165_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent files with the setuid and setgid bit set from being executed on file systems that are used with removable media.","description":"The \"nosuid\" mount option causes the system to not execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify file systems that are used for removable media are mounted with the \"nosuid\" option with the following command:\n\n$ cat /etc/fstab\n\nUUID=0cb43738-b102-48f8-9174-061d8ee537b8 /mnt/usbdrive vfat noauto,owner,ro,nosuid,nodev,noexec 0 0\n\nIf a file system found in \"/etc/fstab\" refers to removable media and it does not have the \"nosuid\" option set, this is a finding.","fixText":"Configure the \"/etc/fstab\" to use the \"nosuid\" option on file systems that are associated with removable media.","ccis":["CCI-000366"]},{"vulnId":"V-269284","ruleId":"SV-269284r1101813_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable the use of user namespaces.","description":"User namespaces are used primarily for Linux containers. The value \"0\" disallows the use of user namespaces.","checkContent":"Note: User namespaces are used primarily for Linux containers. If containers are in use, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 disables the use of user namespaces with the following commands:\n\n$ sysctl user.max_user_namespaces\n\nuser.max_user_namespaces = 0\n\nIf the returned line does not have a value of \"0\", or a line is not returned, this is a finding.\n\nCheck that the configuration files are present to enable this kernel parameter.\n\n$ /usr/lib/systemd/systemd-sysctl --cat-config | egrep -v '^(#|;)' | grep -F user.max_user_namespaces | tail -1\n\nuser.max_user_namespaces = 0\n\nIf the network parameter \"user.max_user_namespaces\" is not equal to \"0\", or nothing is returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to disable the use of user namespaces by adding the following line to a file, in the \"/etc/sysctl.d\" directory:\n\nuser.max_user_namespaces = 0\n\nThe system configuration files need to be reloaded for the changes to take effect. To reload the contents of the files, run the following command:\n\n$ sudo sysctl --system","ccis":["CCI-000366"]},{"vulnId":"V-269285","ruleId":"SV-269285r1050167_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent special devices on file systems that are imported via Network File System (NFS).","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Note: If no NFS mounts are configured, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 has the \"nodev\" option configured for all NFS mounts with the following command:\n\n$ grep nfs /etc/fstab\n\n192.168.1.9:/mnt/export /backups nfs4 rw,nosuid,nodev,noexec,sync,soft,sec=krb5p:krb5i:krb5\n\nIf the system is mounting file systems via NFS and the \"nodev\" option is missing, this is a finding.","fixText":"Update each NFS mounted file system to use the \"nodev\" option on file systems that are being imported via NFS.","ccis":["CCI-000366"]},{"vulnId":"V-269286","ruleId":"SV-269286r1050168_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent code execution on file systems that are imported via Network File System (NFS).","description":"The \"noexec\" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary as they may be incompatible. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Note: If no NFS mounts are configured, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 has the \"noexec\" option configured for all NFS mounts with the following command:\n\n$ grep nfs /etc/fstab \n\n192.168.1.9:/mnt/export /backups nfs4 rw,nosuid,nodev,noexec,sync,soft,sec=krb5p:krb5i:krb5\n\nIf the system is mounting file systems via NFS and the \"noexec\" option is missing, this is a finding.","fixText":"Update each NFS mounted file system to use the \"noexec\" option on file systems that are being imported via NFS.","ccis":["CCI-000366"]},{"vulnId":"V-269287","ruleId":"SV-269287r1050169_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent files with the setuid and setgid bit set from being executed on file systems that are imported via Network File System (NFS).","description":"The \"nosuid\" mount option causes the system not to execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. Executing files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Note: If no NFS mounts are configured, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 has the \"nosuid\" option configured for all NFS mounts with the following command:\n\n$ grep nfs /etc/fstab\n\n192.168.22.2:/mnt/export /data nfs4 rw,nosuid,nodev,noexec,sync,soft,sec=krb5:krb5i:krb5p\n\nIf the system is mounting file systems via NFS and the \"nosuid\" option is missing, this is a finding.","fixText":"Update each NFS mounted file system to use the \"nosuid\" option on file systems that are being imported via NFS.","ccis":["CCI-000366"]},{"vulnId":"V-269288","ruleId":"SV-269288r1050170_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must configure a DNS processing mode set be Network Manager.","description":"To ensure that DNS resolver settings are respected, a DNS mode in Network Manager must be configured.","checkContent":"Note: If AlmaLinux OS 9 is configured to use a DNS resolver other than Network Manager, the configuration must be documented and approved by the information system security officer (ISSO).\n\nVerify that AlmaLinux OS 9 has a DNS mode configured in Network Manager.\n\n$ NetworkManager --print-config\n[main]\ndns=none\n\nIf the \"dns\" key in the [main] section does not exist or is not set to \"none\" or \"default\", this is a finding.","fixText":"Configure NetworkManager in AlmaLinux OS 9 to use a DNS mode.\n\nIn \"/etc/NetworkManager/NetworkManager.conf\" add the following line in the \"[main]\" section:\n\ndns = none\n\nNetworkManager must be reloaded for the change to take effect.\n\n$ systemctl reload NetworkManager","ccis":["CCI-000366"]},{"vulnId":"V-269289","ruleId":"SV-269289r1050171_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 systems using Domain Name Servers (DNS) resolution must have at least two name servers configured.","description":"To provide availability for name resolution services, multiple redundant name servers are mandated. A failure in name resolution could lead to the failure of security functions requiring name resolution, which may include time synchronization, centralized authentication, and remote system logging.","checkContent":"Verify the name servers used by the system with the following command:\n\n$ grep nameserver /etc/resolv.conf\n\nnameserver 192.168.2.4\nnameserver 192.168.2.5\n\nIf less than two lines are returned that are not commented out, this is a finding.","fixText":"Configure the operating system to use two or more name servers for DNS resolution based on the DNS mode of the system.\n\nIf the NetworkManager DNS mode is set to \"none\" in the [main] section of /etc/NetworkManager/NetworkManager.conf, then add the following lines to \"/etc/resolv.conf\":\n\nnameserver [name server 1]\nnameserver [name server 2]\n\nReplace [name server 1] and [name server 2] with the IPs of two different DNS resolvers.\n\nIf the NetworkManager DNS mode is set to \"default\", then add two DNS servers to a NetworkManager connection using the following commands:\n\n$ nmcli connection modify [connection name] ipv4.dns [name server 1]\n$ nmcli connection modify [connection name] ipv4.dns [name server 2]\n\nReplace [name server 1] and [name server 2] with the IPs of two different DNS resolvers. Replace [connection name] with a valid NetworkManager connection name on the system. Replace \"ipv4\" with \"ipv6\" if IPv6 DNS servers are used.","ccis":["CCI-000366"]},{"vulnId":"V-269290","ruleId":"SV-269290r1184095_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent special devices on nonroot local partitions.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify all nonroot local partitions are mounted with the \"nodev\" option with the following command:\n\n$ mount | grep '^/dev\\S* on /\\S' | grep --invert-match 'nodev'\n\nIf any output is produced, this is a finding.","fixText":"Configure the \"/etc/fstab\" to use the \"nodev\" option on all nonroot local partitions.","ccis":["CCI-000366"]},{"vulnId":"V-269291","ruleId":"SV-269291r1050173_rule","severity":"medium","ruleTitle":"The root account must be the only account having unrestricted access to an AlmaLinux OS 9 system.","description":"An account has root authority if it has a user identifier (UID) of \"0\". Multiple accounts with a UID of \"0\" afford more opportunity for potential intruders to guess a password for a privileged account.\n\nProper configuration of sudo is recommended to afford multiple system administrators access to root privileges in an accountable manner.","checkContent":"Verify that only the \"root\" account has a UID \"0\" assignment with the following command:\n\n$ awk -F: '$3 == 0 {print $1}' /etc/passwd\n\nroot\n\nIf any accounts other than \"root\" have a UID of \"0\", this is a finding.","fixText":"Change the UID of any account on the system, other than root which has a UID of \"0\". \n\nIf the account is associated with system commands or applications, the UID should be changed to one greater than \"0\" but less than \"1000\". Otherwise, assign a UID of greater than \"1000\" that has not already been assigned.","ccis":["CCI-000366"]},{"vulnId":"V-269292","ruleId":"SV-269292r1050174_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must be configured so that the cryptographic hashes of system files match vendor values.","description":"The hashes of important files like system executables should match the information given by the RPM database. Executables with erroneous hashes could be a sign of nefarious activity on the system.","checkContent":"The following command will list which files on the system have file hashes different from what is expected by the RPM database:\n\n $ rpm -Va --noconfig | awk '$1 ~ /..5/ && $2 != \"c\"' \n\nIf there is an output, this is a finding.","fixText":"Given the output from the check command, identify the package that provides the output and reinstall it.\n\nThe following trimmed example output shows a package that has failed verification, been identified, reinstalled, and then passed re-verification:\n\n$ rpm -Va --noconfig | awk '$1 ~ /..5/ && $2 != \"c\"' \n\nS.5....T.    /usr/bin/tar\n\n$ dnf whatprovides /usr/bin/tar\n\ntar-2:1.34-6.el9_1.x86_64 : GNU file archiving program\n\n$ dnf reinstall tar\n\n$ rpm -Va --noconfig | awk '$1 ~ /..5/ && $2 != \"c\"' \n\n[no output]","ccis":["CCI-000366"]},{"vulnId":"V-269293","ruleId":"SV-269293r1050175_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must clear the page allocator to prevent use-after-free attacks.","description":"Poisoning writes an arbitrary value to freed pages, so any modification or reference to that page after being freed or before being initialized will be detected and prevented. \n\nThis prevents many types of use-after-free vulnerabilities at little performance cost. This also prevents data leaks and detects corrupted memory.","checkContent":"Verify that GRUB 2 is configured to enable page poisoning to mitigate use-after-free vulnerabilities.\n\nCheck that the current GRUB 2 configuration has page poisoning enabled  with the following command:\n\n$ grubby --info=ALL | grep args | grep -v 'page_poison=1'\n\nIf any output is returned, this is a finding.\n\nCheck that page poisoning is enabled by default to persist in kernel updates with the following command: \n\n$ grep page_poison /etc/default/grub\n\nGRUB_CMDLINE_LINUX=\"page_poison=1\"\n\nIf \"page_poison\" is not set to \"1\", is missing or commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enable page poisoning with the following commands:\n\n$ grubby --update-kernel=ALL --args=\"page_poison=1\"\n\nAdd or modify the following line in \"/etc/default/grub\" to ensure the configuration survives kernel updates:\n\nGRUB_CMDLINE_LINUX=\"page_poison=1\"","ccis":["CCI-000366"]},{"vulnId":"V-269295","ruleId":"SV-269295r1050177_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 security patches and updates must be installed and up to date.","description":"Installing software updates is a fundamental mitigation against the exploitation of publicly known vulnerabilities. \n\nIf the most recent security patches and updates are not installed, unauthorized users may take advantage of weaknesses in the unpatched software. \n\nThe lack of prompt attention to patching could result in a system compromise.","checkContent":"Verify AlmaLinux OS 9 security patches and updates are installed and up to date. Updates are required to be applied with a frequency determined by organizational policy.\n\nObtain the list of available package security updates from TuxCare. The URL for updates is https://cve.tuxcare.com/els/cve/.\n\nIt is important to note that updates may not be present on the system if the underlying packages are not installed.\n\nCheck if there are security updates available that have not been installed with the following command:\n\n$ dnf updateinfo list updates security\n\nCLSA-2024:1708029809 Important/Sec. gnutls-3.7.6-21.el9_2.tuxcare.els1.x86_64\nCLSA-2024:1708029936 Important/Sec. gnutls-3.7.6-21.el9_2.tuxcare.els2.x86_64\nCLSA-2024:1708416911 Important/Sec. libxml2-2.9.13-3.el9_2.1.tuxcare.els1.x86_64\nCLSA-2024:1708417063 Moderate/Sec.  python3-rpm-4.16.1.3-22.el9.tuxcare.els1.x86_64\nCLSA-2024:1708417063 Moderate/Sec.  rpm-4.16.1.3-22.el9.tuxcare.els1.x86_64\nCLSA-2024:1708417063 Moderate/Sec.  rpm-build-libs-4.16.1.3-22.el9.tuxcare.els1.x86_64\nCLSA-2024:1708417063 Moderate/Sec.  rpm-libs-4.16.1.3-22.el9.tuxcare.els1.x86_64\nCLSA-2024:1708417063 Moderate/Sec.  rpm-plugin-audit-4.16.1.3-22.el9.tuxcare.els1.x86_64\nCLSA-2024:1708417063 Moderate/Sec.  rpm-plugin-selinux-4.16.1.3-22.el9.tuxcare.els1.x86_64\nCLSA-2024:1708417063 Moderate/Sec.  rpm-plugin-systemd-inhibit-4.16.1.3-22.el9.tuxcare.els1.x86_64\nCLSA-2024:1708417063 Moderate/Sec.  rpm-sign-libs-4.16.1.3-22.el9.tuxcare.els1.x86_64\n\nTypical update frequency may be overridden by Information Assurance Vulnerability Alert (IAVA) notifications from CYBERCOM.\n\nIf the system is in not compliant with the organizational patching policy, this is a finding.","fixText":"Install AlmaLinux OS 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, all updates can be installed with the following command:\n\n$ dnf upgrade","ccis":["CCI-000366"]},{"vulnId":"V-269296","ruleId":"SV-269296r1050178_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 policycoreutils-python-utils package must be installed.","description":"The policycoreutils-python-utils package is required to operate and manage an SELinux environment and its policies. It provides utilities such as semanage, audit2allow, audit2why, chcat, and sandbox.","checkContent":"Verify that AlmaLinux OS 9 policycoreutils-python-utils service package is installed with the following command:\n\n$ dnf list --installed policycoreutils-python-utils\n\npolicycoreutils-python-utils.noarch          3.5-1.el9                           @AppStream\n\nIf the \"policycoreutils-python-utils\" package is not installed, this is a finding.","fixText":"Install the policycoreutils-python-utils package with the following command:\n\n$ dnf install policycoreutils-python-utils","ccis":["CCI-000366"]},{"vulnId":"V-269297","ruleId":"SV-269297r1050179_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enable the hardware random number generator entropy gatherer service.","description":"The most important characteristic of a random number generator is its randomness, specifically its ability to deliver random numbers that are impossible to predict. Entropy in computer security is associated with the unpredictability of a source of randomness. The random source with high entropy tends to achieve a uniform distribution of random values. Random number generators are one of the most important building blocks of cryptosystems.\n\nThe rngd service feeds random data from hardware device to kernel random device. Quality (nonpredictable) random number generation is important for several security functions (i.e., ciphers).","checkContent":"Note: For AlmaLinux OS 9 systems running with FIPS mode enabled, this requirement is Not Applicable.\n\nVerify that AlmaLinux OS 9 has enabled the hardware random number generator entropy gatherer service with the following command:\n\n$ systemctl is-active rngd\n\nactive\n\nIf the \"rngd\" service is not active, this is a finding.","fixText":"Install the rng-tools package with the following command:\n\n$ dnf install rng-tools\n\nThen enable the rngd service run the following command:\n\n$ systemctl enable --now rngd","ccis":["CCI-000366"]},{"vulnId":"V-269298","ruleId":"SV-269298r1050180_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the rng-tools package installed.","description":"\"rng-tools\" provides hardware random number generator tools, such as those used in the formation of x509/PKI certificates.","checkContent":"Verify that AlmaLinux OS 9 has the rng-tools package installed with the following command:\n\n$ dnf list --installed rng-tools\n\nrng-tools.x86_64         6.15-3.el9                              @baseos\n\nIf the \"rng-tools\" package is not installed, this is a finding.","fixText":"The rng-tools package can be installed with the following command:\n \n$ dnf install rng-tools","ccis":["CCI-000366"]},{"vulnId":"V-269299","ruleId":"SV-269299r1050181_rule","severity":"medium","ruleTitle":"The SSH daemon must perform strict mode checking of home directory configuration files.","description":"If other users have access to modify user-specific SSH configuration files or read keys, they may be able to log into the system as another user.","checkContent":"Verify the SSH daemon performs strict mode checking of home directory configuration files with the following command:\n\n$ sshd -T | grep strictmodes\n\nstrictmodes yes\n\nIf the \"StrictModes\" keyword is set to \"no\", or no output is returned, this is a finding.","fixText":"To configure the SSH daemon to perform strict mode checking of home directory configuration files, add or modify the following line in \"/etc/ssh/sshd_config\", or uncomment the line and set the value to \"yes\":\n\nStrictModes yes\n\nAlternatively, add the setting to an include file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\n$ echo \"StrictModes yes\" > /etc/ssh/sshd_config.d/strictmodes.conf\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-000366"]},{"vulnId":"V-269300","ruleId":"SV-269300r1050182_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 system accounts must not have an interactive login shell.","description":"Ensuring shells are not given to system accounts upon login makes it more difficult for attackers to make use of system accounts.","checkContent":"Verify that system accounts must not have an interactive login shell with the following command:\n\n$ awk -F: '($3<1000){print $1 \":\" $3 \":\" $7}' /etc/passwd\n\nroot:0:/bin/bash\nbin:1:/sbin/nologin\ndaemon:2:/sbin/nologin\nadm:3:/sbin/nologin\nlp:4:/sbin/nologin\nsync:5:/bin/sync\nshutdown:6:/sbin/shutdown\nhalt:7:/sbin/halt\nmail:8:/sbin/nologin\noperator:11:/sbin/nologin\ngames:12:/sbin/nologin\nftp:14:/sbin/nologin\nsystemd-coredump:999:/sbin/nologin\ndbus:81:/sbin/nologin\npolkitd:998:/sbin/nologin\ntss:59:/sbin/nologin\nsssd:997:/sbin/nologin\nunbound:996:/sbin/nologin\nfapolicyd:995:/sbin/nologin\npostfix:89:/sbin/nologin\nsshd:74:/sbin/nologin\nchrony:994:/sbin/nologin\nsystemd-oom:989:/usr/sbin/nologin\n\nIdentify the system accounts from this listing that do not have a nologin shell.\n\nIf any system account (other than the root account) has a login shell and it is not documented with the information system security officer (ISSO), this is a finding.","fixText":"Configure AlmaLinux OS 9 so that all noninteractive accounts on the system do not have an interactive shell assigned to them.\n\nIf the system account needs a shell assigned for mission operations, document the need with the ISSO.\n\nRun the following command to disable the interactive shell for a specific noninteractive user account, replacing <user> with the user that has a login shell.\n\n$ usermod --shell /sbin/nologin <user>\n\nDo not perform the steps in this section on the root account. Doing so will cause the system to become inaccessible.","ccis":["CCI-000366"]},{"vulnId":"V-269301","ruleId":"SV-269301r1050183_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must use a separate file system for /tmp.","description":"The \"/tmp\" partition is used as temporary storage by many programs. Placing \"/tmp\" in its own partition enables the setting of more restrictive mount options, which can help protect programs that use it.","checkContent":"Verify that a separate file system/partition has been created for \"/tmp\" with the following command:\n\n$ mount | grep ' /tmp '\n\ntmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,relatime,seclabel,size=2097152k,inode64)\n\nIf a separate entry for \"/tmp\" is not in use, this is a finding.","fixText":"Migrate the \"/tmp\" path onto a separate file system.","ccis":["CCI-000366"]},{"vulnId":"V-269303","ruleId":"SV-269303r1050185_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must use a separate file system for /var/log.","description":"Placing \"/var/log\" in its own partition enables better separation between log files and other files in \"/var/\".","checkContent":"Verify that a separate file system/partition has been created for \"/var/log\" with the following command:\n\n$ mount | grep ' /var/log '\n\n/dev/mapper/luks-e0d162f5-fad8-463e-8e39-6bd09e672961 on /var/log type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf a separate entry for \"/var/log\" is not in use, this is a finding.","fixText":"Migrate the \"/var/log\" path onto a separate file system.","ccis":["CCI-000366"]},{"vulnId":"V-269304","ruleId":"SV-269304r1050186_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must use a separate file system for /var.","description":"Ensuring that \"/var\" is mounted on its own partition enables the setting of more restrictive mount options. This helps protect system services such as daemons or other programs which use it. It is not uncommon for the \"/var\" directory to contain world-writable directories installed by other software packages.","checkContent":"Verify that a separate file system/partition has been created for \"/var\" with the following command:\n\n$ mount | grep ' /var '\n\n/dev/mapper/luks-b23d8276-7844-4e79-8a58-505150b6eb42 on /var type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf a separate entry for \"/var\" is not in use, this is a finding.","fixText":"Migrate the \"/var\" path onto a separate file system.","ccis":["CCI-000366"]},{"vulnId":"V-269305","ruleId":"SV-269305r1050187_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must use a separate file system for /var/tmp.","description":"The \"/var/tmp\" partition is used as temporary storage by many programs. Placing \"/var/tmp\" in its own partition enables the setting of more restrictive mount options, which can help protect programs that use it.","checkContent":"Verify that a separate file system/partition has been created for \"/var/tmp\" with the following command:\n\n$ mount | grep /var/tmp\n\n/dev/mapper/luks-0e7206e7-bfb1-4a23-ae14-b9cea7cf76d5 on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf a separate entry for \"/var/tmp\" is not in use, this is a finding.","fixText":"Migrate the \"/var/tmp\" path onto a separate file system.","ccis":["CCI-000366"]},{"vulnId":"V-269306","ruleId":"SV-269306r1050188_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable virtual system calls.","description":"System calls are special routines in the Linux kernel, which userspace applications ask to do privileged tasks. Invoking a system call is an expensive operation because the processor must interrupt the currently executing task and switch context to kernel mode, and then switch back to userspace after the system call completes. Virtual system calls map a page into userspace that contains some variables and the implementation of some system calls. This allows the system calls to be executed in userspace to alleviate the context switching expense.\n\nVirtual system calls provide an opportunity of attack for a user who has control of the return instruction pointer. Disabling virtual system calls help to prevent return oriented programming (ROP) attacks via buffer overflows and overruns.","checkContent":"Verify the current GRUB 2 configuration disables virtual system calls with the following command:\n\n$ grubby --info=ALL | grep args | grep -v 'vsyscall=none'\n\nIf any output is returned, this is a finding.\n\nCheck that virtual system calls are disabled by default to persist in kernel updates with the following command: \n\n$ grep vsyscall /etc/default/grub\n\nGRUB_CMDLINE_LINUX=\"vsyscall=none\"\n\nIf \"vsyscall\" is not set to \"none\", is missing or commented out, and is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"Document the use of virtual system calls with the ISSO as an operational requirement, or disable them with the following command:\n\n$ grubby --update-kernel=ALL --args=\"vsyscall=none\"\n\nAdd or modify the following line in \"/etc/default/grub\" to ensure the configuration survives kernel updates:\n\nGRUB_CMDLINE_LINUX=\"vsyscall=none\"","ccis":["CCI-000366"]},{"vulnId":"V-269307","ruleId":"SV-269307r1050189_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must use cron logging.","description":"Cron logging can be used to trace the successful or unsuccessful execution of cron jobs. It can also be used to spot intrusions into the use of the cron facility by unauthorized and malicious users.","checkContent":"Verify that \"rsyslog\" is configured to log cron events with the following command:\n\nNote: If another logging package is used, substitute the utility configuration file for \"/etc/rsyslog.conf\" or \"/etc/rsyslog.d/*.conf\" files.\n\n$ grep -s cron /etc/rsyslog.conf /etc/rsyslog.d/*.conf\n\n/etc/rsyslog.conf:*.info;mail.none;authpriv.none;cron.none                /var/log/messages\n/etc/rsyslog.conf:# Log cron stuff\n/etc/rsyslog.conf:cron.*                                                  /var/log/cron\n\nIf the command does not return a response, check for cron logging all facilities with the following command:\n\n$ grep -s /var/log/messages /etc/rsyslog.conf /etc/rsyslog.d/*.conf\n\n/etc/rsyslog.conf:*.info;mail.none;authpriv.none;cron.none                /var/log/messages\n\nIf \"rsyslog\" is not logging messages for the cron facility or all facilities, this is a finding.","fixText":"Configure \"rsyslog\" to log all cron messages by adding or updating the following line to \"/etc/rsyslog.conf\" or a configuration file in the /etc/rsyslog.d/ directory:\n\ncron.* /var/log/cron\n\nThe rsyslog daemon must be restarted for the changes to take effect:\n\n$ systemctl restart rsyslog.service","ccis":["CCI-000366"]},{"vulnId":"V-269308","ruleId":"SV-269308r1184097_rule","severity":"medium","ruleTitle":"AlmaLinux OS 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.","description":"Unintentionally running a rsyslog server accepting remote messages puts the system at increased risk. Malicious rsyslog messages sent to the server could exploit vulnerabilities in the server software itself, could introduce misleading information into the system's logs, or could fill the system's storage leading to a denial of service.\n\nIf the system is intended to be a log aggregation server, its use must be documented with the information system security officer (ISSO).","checkContent":"Note: If the system administrator (SA) can demonstrate that another tool (e.g., SPLUNK) is being used to manage log offload and aggregation in lieu of rsyslog, this check is not applicable.\n\nVerify AlmaLinux OS 9 is not configured to receive remote logs using rsyslog with the following commands:\n\n$ ss -tulnp | grep rsyslog\n\nIf no output is returned, rsyslog is not listening for remote messages, and is compliant.\n\nIf output appears, check for configured ports (514 is the default for syslog).\n\nCheck for remote logging configuration in rsyslog by examining the rsyslog configuration files:\n\n$ sudo grep -E 'InputTCPServerRun|UDPServerRun|RELPServerRun|imtcp|imudp|imrelp' /etc/rsyslog.conf /etc/rsyslog.d/*\n\nIf this command returns uncommented lines enabling network listeners, the system is accepting remote logs. If this system is not documented and authorized as a log aggregation server, this is a finding.","fixText":"Configure AlmaLinux OS 9 to not receive remote logs using rsyslog.\n\nRemove the lines in /etc/rsyslog.conf and any files in the /etc/rsyslog.d directory that match any of the following:\nInputTCPServerRun\nUDPServerRun\nRELPServerRun\nmodule(load=\"imtcp\")\nmodule(load=\"imudp\")\nmodule(load=\"imrelp\")\ninput(type=\"imudp\" port=\"514\")\ninput(type=\"imtcp\" port=\"514\")\ninput(type=\"imrelp\" port=\"514\")\n\nThe rsyslog daemon must be restarted for the changes to take effect:\n\n$ sudo systemctl restart rsyslog.service","ccis":["CCI-000366"]},{"vulnId":"V-269309","ruleId":"SV-269309r1050191_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent files with the setuid and setgid bit set from being executed on file systems that contain user home directories.","description":"The \"nosuid\" mount option causes the system to not execute \"setuid\" and \"setgid\" files with owner privileges. \n\nThis option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. \n\nExecuting files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nSatisfies: SRG-OS-000480-GPOS-00230, SRG-OS-000368-GPOS-00154","checkContent":"Verify \"/home\" is mounted with the \"nosuid\" option with the following command:\n\nNote: If a separate file system has not been created for the user home directories (user home directories are mounted under \"/\"), this is automatically a finding, as the \"nosuid\" option cannot be used on the \"/\" system.\n\n$ mount | grep /home\n\n/dev/mapper/luks-10a20c46-483d-4d12-831f-5328eda18fd1 on /home type xfs (rw,nosuid,nodev,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the \"/home\" file system is mounted without the \"nosuid\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nosuid\" option on the \"/home\" directory.","ccis":["CCI-000366","CCI-001764"]},{"vulnId":"V-269310","ruleId":"SV-269310r1050192_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent device files from being interpreted on file systems that contain user home directories.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify \"/home\" is mounted with the \"nodev\" option with the following command:\n\nNote: If a separate file system has not been created for the user home directories (user home directories are mounted under \"/\"), this is automatically a finding, as the \"nodev\" option cannot be used on the \"/\" system.\n\n$ mount | grep /home\n\n/dev/mapper/luks-10a20c46-483d-4d12-831f-5328eea18fd1 on /home type xfs (rw,nosuid,nodev,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the \"/home\" file system is mounted without the \"nodev\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nodev\" option on the \"/home\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269311","ruleId":"SV-269311r1184099_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent files with the setuid and setgid bit set from being executed on the /boot/efi directory.","description":"The \"nosuid\" mount option causes the system not to execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. \n\nExecuting files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify the /boot/efi directory is mounted with the \"nosuid\" option with the following command:\n\n$ mount | grep '\\s/boot/efi\\s'\n\n/dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro)\n\nIf the /boot/efi file system does not have the \"nosuid\" option set, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nosuid\" option on the \"/boot/efi\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269312","ruleId":"SV-269312r1050194_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /boot with the nodev option.","description":"The only legitimate location for device files is the \"/dev\" directory located on the root partition. The only exception to this is chroot jails.","checkContent":"Verify that the \"/boot\" mount point has the \"nodev\" option is with the following command:\n\n$ mount | grep '\\s/boot\\s'\n\n/dev/sda2 on /boot type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the \"/boot\" file system does not have the \"nodev\" option set, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nodev\" option on the \"/boot\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269313","ruleId":"SV-269313r1050195_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent files with the setuid and setgid bit set from being executed on the /boot directory.","description":"The \"nosuid\" mount option causes the system not to execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. \n\nExecuting files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify the /boot directory is mounted with the \"nosuid\" option with the following command:\n\n$ mount | grep '\\s/boot\\s'\n\n/dev/sda2 on /boot type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the /boot file system does not have the \"nosuid\" option set, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nosuid\" option on the \"/boot\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269314","ruleId":"SV-269314r1050196_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /dev/shm with the nodev option.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify \"/dev/shm\" is mounted with the \"nodev\" option with the following command:\n\n$ mount | grep /dev/shm\n\ntmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,seclabel,size=2097152k,inode64)\n\nIf the /dev/shm file system is mounted without the \"nodev\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nodev\" option on the \"/dev/shm\" file system.","ccis":["CCI-001764"]},{"vulnId":"V-269315","ruleId":"SV-269315r1050197_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /dev/shm with the noexec option.","description":"The \"noexec\" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. \n\nExecuting files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify \"/dev/shm\" is mounted with the \"noexec\" option with the following command:\n\n$ mount | grep /dev/shm\n\ntmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,seclabel,size=2097152k,inode64)\n\nIf the /dev/shm file system is mounted without the \"noexec\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"noexec\" option on the \"/dev/shm\" file system.","ccis":["CCI-001764"]},{"vulnId":"V-269316","ruleId":"SV-269316r1050198_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /dev/shm with the nosuid option.","description":"The \"nosuid\" mount option causes the system to not execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files.\n\nExecuting files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify \"/dev/shm\" is mounted with the \"nosuid\" option with the following command:\n\n$ mount | grep /dev/shm\n\ntmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,seclabel,size=2097152k,inode64)\n\nIf the /dev/shm file system is mounted without the \"noexec\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nosuid\" option on the \"/dev/shm\" file system.","ccis":["CCI-001764"]},{"vulnId":"V-269317","ruleId":"SV-269317r1050199_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /tmp with the nodev option.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify \"/tmp\" is mounted with the \"nodev\" option:\n\n$ mount | grep ' /tmp'\n\ntmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,relatime,seclabel,size=2097152k,inode64)\n\nIf the \"/tmp\" file system is mounted without the \"nodev\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nodev\" option on the \"/tmp\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269318","ruleId":"SV-269318r1050200_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /tmp with the noexec option.","description":"The \"noexec\" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. \n\nExecuting files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify \"/tmp\" is mounted with the \"noexec\" option:\n\n$ mount | grep ' /tmp'\n\ntmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,relatime,seclabel,size=2097152k,inode64)\n\nIf the \"/tmp\" file system is mounted without the \"noexec\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"noexec\" option on the \"/tmp\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269319","ruleId":"SV-269319r1050201_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /tmp with the nosuid option.","description":"The \"nosuid\" mount option causes the system to not execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. \n\nExecuting files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify \"/tmp\" is mounted with the \"nosuid\" option:\n\n$ mount | grep ' /tmp'\n\ntmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,relatime,seclabel,size=2097152k,inode64)\n\nIf the \"/tmp\" file system is mounted without the \"nosuid\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nosuid\" option on the \"/tmp\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269320","ruleId":"SV-269320r1050202_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /var/log/audit with the nodev option.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify \"/var/log/audit\" is mounted with the \"nodev\" option:\n\n$ mount | grep /var/log/audit\n\n/dev/mapper/luks-29b74747-2f82-4472-82f5-0b5eb763effc on /var/log/audit type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the \"/var/log/audit\" file system is mounted without the \"nodev\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nodev\" option on the \"/var/log/audit\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269321","ruleId":"SV-269321r1050203_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /var/log/audit with the noexec option.","description":"The \"noexec\" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible.\n\nExecuting files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify \"/var/log/audit\" is mounted with the \"noexec\" option:\n\n$ mount | grep /var/log/audit\n\n/dev/mapper/luks-29b74747-2f82-4472-82f5-0b5eb763effc on /var/log/audit type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the \"/var/log/audit\" file system is mounted without the \"noexec\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"noexec\" option on the \"/var/log/audit\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269322","ruleId":"SV-269322r1050204_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /var/log/audit with the nosuid option.","description":"The \"nosuid\" mount option causes the system to not execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. \n\nExecuting files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify \"/var/log/audit\" is mounted with the \"nosuid\" option:\n\n$ mount | grep /var/log/audit\n\n/dev/mapper/luks-29b74747-2f82-4472-82f5-0b5eb763effc on /var/log/audit type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the \"/var/log/audit\" file system is mounted without the \"nosuid\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nosuid\" option on the \"/var/log/audit\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269323","ruleId":"SV-269323r1050205_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /var/log with the nodev option.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify \"/var/log\" is mounted with the \"nodev\" option:\n\n$ mount | grep '/var/log '\n\n/dev/mapper/luks-e0d162f5-fad8-463e-8e39-6bd09e672961 on /var/log type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the \"/var/log\" file system is mounted without the \"nodev\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nodev\" option on the \"/var/log\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269324","ruleId":"SV-269324r1050206_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /var/log with the noexec option.","description":"The \"noexec\" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible.\n\nExecuting files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify \"/var/log\" is mounted with the \"noexec\" option:\n\n$ mount | grep '/var/log '\n\n/dev/mapper/luks-e0d162f5-fad8-463e-8e39-6bd09e672961 on /var/log type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the \"/var/log\" file system is mounted without the \"noexec\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"noexec\" option on the \"/var/log\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269325","ruleId":"SV-269325r1050207_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /var/log with the nosuid option.","description":"The \"nosuid\" mount option causes the system to not execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. \n\nExecuting files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify \"/var/log\" is mounted with the \"nosuid\" option:\n\n$ mount | grep '/var/log '\n\n/dev/mapper/luks-e0d162f5-fad8-463e-8e39-6bd09e672961 on /var/log type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the \"/var/log\" file system is mounted without the \"nosuid\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nosuid\" option on the \"/var/log\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269326","ruleId":"SV-269326r1050208_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /var with the nodev option.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify \"/var\" is mounted with the \"nodev\" option:\n\n$ mount | grep ' /var '\n\n/dev/mapper/luks-b23d8276-7844-4e79-8a58-505150b6eb42 on /var type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the \"/var\" file system is mounted without the \"nodev\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nodev\" option on the \"/var\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269327","ruleId":"SV-269327r1050209_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /var/tmp with the nodev option.","description":"The \"nodev\" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.\n\nThe only legitimate location for device files is the \"/dev\" directory located on the root partition, with the exception of chroot jails if implemented.","checkContent":"Verify \"/var/tmp\" is mounted with the \"nodev\" option:\n\n$ mount | grep /var/tmp\n\n/dev/mapper/luks-0e7206e7-bfb1-4a23-ae14-b9cea7cf76d5 on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the \"/var/tmp\" file system is mounted without the \"nodev\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nodev\" option on the \"/var/tmp\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269328","ruleId":"SV-269328r1050210_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /var/tmp with the noexec option.","description":"The \"noexec\" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. \n\nExecuting files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify \"/var/tmp\" is mounted with the \"noexec\" option:\n\n$ mount | grep /var/tmp\n\n/dev/mapper/luks-0e7206e7-bfb1-4a23-ae14-b9cea7cf76d5 on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the \"/var/tmp\" file system is mounted without the \"noexec\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"noexec\" option on the \"/var/tmp\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269329","ruleId":"SV-269329r1050211_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must mount /var/tmp with the nosuid option.","description":"The \"nosuid\" mount option causes the system to not execute \"setuid\" and \"setgid\" files with owner privileges. This option must be used for mounting any file system not containing approved \"setuid\" and \"setguid\" files. \n\nExecuting files from untrusted file systems increases the opportunity for nonprivileged users to attain unauthorized administrative access.","checkContent":"Verify \"/var/tmp\" is mounted with the \"nosuid\" option:\n\n$ mount | grep /var/tmp\n\n/dev/mapper/luks-0e7206e7-bfb1-4a23-ae14-b9cea7cf76d5 on /var/tmp type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)\n\nIf the \"/var/tmp\" file system is mounted without the \"nosuid\" option, this is a finding.","fixText":"Modify \"/etc/fstab\" to use the \"nosuid\" option on the \"/var/tmp\" directory.","ccis":["CCI-001764"]},{"vulnId":"V-269330","ruleId":"SV-269330r1050212_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 fapolicy module must be enabled.","description":"The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as allowlisting.\n\nUtilizing an allowlist provides a configuration management method for allowing the execution of only authorized software. Using only authorized software decreases risk by limiting the number of potential vulnerabilities. Verification of allowlisted software occurs prior to execution or at system startup.\n\nUser home directories/folders may contain information of a sensitive nature. Nonprivileged users should coordinate any sharing of information with a system administrator (SA) through shared resources.\n\nAlmaLinux OS 9 ships with many optional packages. One such package is a file access policy daemon called \"fapolicyd\". \"fapolicyd\" is a userspace daemon that determines access rights to files based on attributes of the process and file. It can be used to either blocklist or allowlist processes or file access.\n\nProceed with caution with enforcing the use of this daemon. Improper configuration may render the system nonfunctional. The \"fapolicyd\" API is not namespace aware and can cause issues when launching or running containers.","checkContent":"Verify that AlmaLinux OS 9 fapolicyd is active with the following command:\n\n$ systemctl status fapolicyd\n\n fapolicyd.service - File Access Policy Daemon\n     Loaded: loaded (/usr/lib/systemd/system/fapolicyd.service; enabled; preset: disabled)\n     Active: active (running) since Thu 2024-02-08 09:42:05 UTC; 3h 38min ago\n\nIf fapolicyd module is not active, this is a finding.","fixText":"Enable the fapolicyd with the following command:\n\n$ systemctl enable --now fapolicyd","ccis":["CCI-001774"]},{"vulnId":"V-269331","ruleId":"SV-269331r1050213_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 fapolicy module must be installed.","description":"The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as allowlisting.\n\nUtilizing an allowlist provides a configuration management method for allowing the execution of only authorized software. Using only authorized software decreases risk by limiting the number of potential vulnerabilities. Verification of allowlisted software occurs prior to execution or at system startup.\n\nUser home directories/folders may contain information of a sensitive nature. Nonprivileged users should coordinate any sharing of information with a system administrator (SA) through shared resources.\n\nAlmaLinux OS 9 ships with many optional packages. One such package is a file access policy daemon called \"fapolicyd\". \"fapolicyd\" is a userspace daemon that determines access rights to files based on attributes of the process and file. It can be used to either blocklist or allowlist processes or file access.\n\nProceed with caution with enforcing the use of this daemon. Improper configuration may render the system nonfunctional. The \"fapolicyd\" API is not namespace aware and can cause issues when launching or running containers.","checkContent":"Verify that AlmaLinux OS 9 fapolicyd package is installed with the following command:\n\n$ dnf list --installed fapolicyd\n\nInstalled Packages\nfapolicyd.x86_64              1.1.3-104.el9                           @AppStream\n\nIf the \"fapolicyd\" package is not installed, this is a finding.","fixText":"Install the fapolicyd package with the following command:\n \n$ dnf install fapolicyd","ccis":["CCI-001774"]},{"vulnId":"V-269332","ruleId":"SV-269332r1050214_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable remote management of the chrony daemon.","description":"Not exposing the management interface of the chrony daemon on the network reduces the attack surface.","checkContent":"Verify AlmaLinux OS 9 disables remote management of the chrony daemon with the following command:\n\n$ chronyd -p | grep -w cmdport\n\ncmdport 0\n\nIf the \"cmdport\" option is not set to \"0\" or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to disable remote management of the chrony daemon by adding/modifying the following line in the /etc/chrony.conf file:\n\ncmdport 0","ccis":["CCI-000381"]},{"vulnId":"V-269333","ruleId":"SV-269333r1050215_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent the chrony daemon from acting as a server.","description":"Being able to determine the system time of a server can be useful information for various attacks from timebomb attacks to location discovery based on time zone.\n\nMinimizing the exposure of the server functionality of the chrony daemon reduces the attack surface.","checkContent":"Verify AlmaLinux OS 9 disables the chrony daemon from acting as a server with the following command:\n\n$ chronyd -p | grep -w port\n\nport 0\n\nIf the \"port\" option is not set to \"0\" or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to disable the chrony daemon from acting as a server by adding/modifying the following line in the /etc/chrony.conf file:\n\nport 0","ccis":["CCI-000381"]},{"vulnId":"V-269334","ruleId":"SV-269334r1050216_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have the iprutils package installed.","description":"The iprutils package provides a suite of utilities to manage and configure SCSI devices supported by the ipr SCSI storage device driver.","checkContent":"Verify that the iprutils package is not installed with the following command:\n\n$ dnf list --installed iprutils\n\nError: No matching Packages to list\n\nIf the \"iprutils\" package is installed and is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"Remove the iprutils package with the following command:\n\n$ dnf remove iprutils","ccis":["CCI-000381"]},{"vulnId":"V-269335","ruleId":"SV-269335r1050217_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have the quagga package installed.","description":"Quagga is a network routing software suite providing implementations of Open Shortest Path First (OSPF), Routing Information Protocol (RIP), Border Gateway Protocol (BGP) for Unix and Linux platforms.\n\nIf there is no need to make the router software available, removing it provides a safeguard against its activation.","checkContent":"Verify that the quagga package is not installed with the following command:\n\n$ dnf list --installed quagga\n\nError: No matching Packages to list\n\nIf the \"quagga\" package is installed, and is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"Remove the quagga package with the following command:\n\n$ dnf remove quagga","ccis":["CCI-000381"]},{"vulnId":"V-269336","ruleId":"SV-269336r1050218_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have the sendmail package installed.","description":"The sendmail software was not developed with security in mind, and its design prevents it from being effectively contained by SELinux. Postfix must be used instead.","checkContent":"Verify that the sendmail package is not installed with the following command:\n\n$ dnf list --installed sendmail\n\nError: No matching Packages to list\n\nIf the \"sendmail\" package is installed, this is a finding.","fixText":"Remove the sendmail package with the following command:\n\n$ dnf remove sendmail","ccis":["CCI-000381"]},{"vulnId":"V-269338","ruleId":"SV-269338r1050220_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have a Trivial File Transfer Protocol (TFTP) client package installed.","description":"If TFTP is required for operational support (such as transmission of router configurations), its use must be documented with the information systems security manager (ISSM), restricted to only authorized personnel, and have access control rules established.","checkContent":"Verify that the tftp package is not installed with the following command:\n\n$ dnf list --installed tftp\n\nIf the \"tftp\" package is installed, this is a finding.","fixText":"Remove the tftp package with the following command:\n\n$ dnf remove tftp","ccis":["CCI-000381"]},{"vulnId":"V-269339","ruleId":"SV-269339r1050221_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have the cups package installed.","description":"The cups package provides printer drivers as well as a print server, webserver, and discovery mechanisms. Removing the package reduces the potential attack surface.","checkContent":"Verify that the cups package is not installed with the following command:\n\n$ dnf list –installed cups\n\nError: No matching Packages to list\n\nIf the \"cups\" package is installed, this is a finding.","fixText":"Remove the cups package with the following command:\n\n$ dnf remove cups","ccis":["CCI-000381"]},{"vulnId":"V-269340","ruleId":"SV-269340r1184101_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have the gssproxy package installed.","description":"The gssproxy package is a proxy for GSS API credential handling and could expose secrets on some networks. It is not needed for normal function of the OS.","checkContent":"Verify that the gssproxy package is not installed with the following command:\n\nNote: If NFS mounts are authorized and in use on the system, this is not applicable.\n\n$ dnf list --installed gssproxy\n\nError: No matching Packages to list\n\nIf the \"gssproxy\" package is installed and is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"Remove the gssproxy package with the following command:\n\n$ dnf remove gssproxy","ccis":["CCI-000381"]},{"vulnId":"V-269341","ruleId":"SV-269341r1050223_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable the Asynchronous Transfer Mode (ATM) kernel module.","description":"The ATM is a transport layer protocol designed for digital transmission of multiple types of traffic, including telephony (voice), data, and video signals, in one network without the use of separate overlay networks. \n\nDisabling ATM protects the system against exploitation of any flaws in its implementation.","checkContent":"Verify that AlmaLinux OS 9 disables the ability to load the atm kernel module with the following command:\n\n$ grep -r atm /etc/modprobe.conf /etc/modprobe.d/* \n\n/etc/modprobe.d/atm.conf:install atm /bin/false\n/etc/modprobe.d/atm.conf:blacklist atm\n\nIf the command does not return any output, or the line is commented out, and use of atm is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"To configure the system to prevent the atm kernel module from being loaded, run the following command:\n\n$ cat << EOF | tee /etc/modprobe.d/atm.conf \ninstall atm /bin/false\nblacklist atm\nEOF","ccis":["CCI-000381"]},{"vulnId":"V-269342","ruleId":"SV-269342r1050224_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must be configured to disable Bluetooth.","description":"This requirement applies to wireless peripheral technologies (e.g., wireless mice, keyboards, displays, etc.) used with AlmaLinux OS 9 systems.\n\nWireless peripherals (e.g., Wi-Fi/Bluetooth/IR keyboards, mice and pointing devices, and near field communications [NFC]) present a unique challenge by creating an open, unsecured port on a computer. Wireless peripherals must meet DOD requirements for wireless data transmission and be approved for use by the authorizing official (AO). Even though some wireless peripherals, such as mice and pointing devices, do not ordinarily carry information that need to be protected, modification of communications with these wireless peripherals may be used to compromise the AlmaLinux OS 9 operating system.","checkContent":"Verify that AlmaLinux OS 9 disables the ability to load the Bluetooth kernel module with the following command:\n\n$ grep -r bluetooth /etc/modprobe.conf /etc/modprobe.d/* \n\n/etc/modprobe.d/bluetooth.conf:install bluetooth /bin/false\n/etc/modprobe.d/bluetooth.conf:blacklist bluetooth\n\nIf the command does not return any output, or the line is commented out, and use of Bluetooth is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"To configure the system to prevent the Bluetooth kernel module from being loaded, run the following command:\n\n$ cat << EOF | tee  /etc/modprobe.d/bluetooth.conf \ninstall bluetooth /bin/false\nblacklist bluetooth\nEOF","ccis":["CCI-000381"]},{"vulnId":"V-269343","ruleId":"SV-269343r1050225_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable the Controller Area Network (CAN) kernel module.","description":"The CAN protocol is a robust vehicle bus standard designed to allow microcontrollers and devices to communicate with each other's applications without a host computer. \n\nDisabling CAN protects the system against exploitation of any flaws in its implementation.","checkContent":"Verify that AlmaLinux OS 9 disables the ability to load the can kernel module with the following command:\n\n$ grep -r can /etc/modprobe.conf /etc/modprobe.d/* \n\n/etc/modprobe.d/can.conf:install can /bin/false\n/etc/modprobe.d/can.conf:blacklist can\n\nIf the command does not return any output, or the 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.","fixText":"To configure the system to prevent the can kernel module from being loaded, run the following command:\n\n$ cat << EOF | tee /etc/modprobe.d/can.conf \ninstall can /bin/false\nblacklist can\nEOF","ccis":["CCI-000381"]},{"vulnId":"V-269344","ruleId":"SV-269344r1050226_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable mounting of cramfs.","description":"Removing support for unneeded filesystem types reduces the local attack surface of the server.\n\nCompressed ROM/RAM file system (or cramfs) is a read-only file system designed for simplicity and space-efficiency. It is mainly used in embedded and small-footprint systems.","checkContent":"Verify that AlmaLinux OS 9 disables the ability to load the cramfs kernel module with the following command:\n\n$ grep cramfs /etc/modprobe.conf /etc/modprobe.d/* \n\nblacklist cramfs\n\nIf the command does not return any output, or the line is commented out, and use of cramfs is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"To configure the system to prevent the cramfs kernel module from being loaded, create a *.conf file in /etc/modprobe.d/ with the following content:\n\ninstall cramfs /bin/false\nblacklist cramfs","ccis":["CCI-000381"]},{"vulnId":"V-269345","ruleId":"SV-269345r1050227_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable the Stream Control Transmission Protocol (SCTP) kernel module.","description":"The SCTP is a transport layer protocol, designed to support the idea of message-oriented communication, with several streams of messages within one connection. \n\nDisabling SCTP protects the system against exploitation of any flaws in its implementation.","checkContent":"Verify that AlmaLinux OS 9 disables the ability to load the SCTP kernel module with the following command:\n\n$ grep -r sctp /etc/modprobe.conf /etc/modprobe.d/* \n\n/etc/modprobe.d/sctp.conf:install sctp /bin/false\n/etc/modprobe.d/sctp.conf:blacklist sctp\n\nIf the command does not return any output, or the line is commented out, and use of SCTP is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"To configure the system to prevent the SCTP kernel module from being loaded, run the following command:\n\n$ cat << EOF | tee /etc/modprobe.d/sctp.conf \ninstall sctp /bin/false\nblacklist sctp\nEOF","ccis":["CCI-000381"]},{"vulnId":"V-269346","ruleId":"SV-269346r1050228_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable mounting of squashfs.","description":"Removing support for unneeded filesystem types reduces the local attack surface of the server.\n\nA squashfs compressed filesystem image can be mounted without first decompressing the image.\n\nNote that Snap packages use squashfs.","checkContent":"Verify that AlmaLinux OS 9 disables the ability to load the squashfs kernel module with the following command:\n\n$ grep squashfs /etc/modprobe.conf /etc/modprobe.d/* \n\nblacklist squashfs\n\nIf the command does not return any output, or the line is commented out, and use of squashfs is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"To configure the system to prevent the squashfs kernel module from being loaded, create a *.conf file in /etc/modprobe.d/ with the following content:\n\ninstall squashfs /bin/false\nblacklist squashfs","ccis":["CCI-000381"]},{"vulnId":"V-269347","ruleId":"SV-269347r1050229_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable the Transparent Inter Process Communication (TIPC) kernel module.","description":"It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors.\n\nFailing to disconnect unused protocols can result in a system compromise.\n\nThe TIPC is a protocol that is specially designed for intra-cluster communication. It can be configured to transmit messages either on UDP or directly across Ethernet. Message delivery is sequence guaranteed, loss free and flow controlled. Disabling TIPC protects the system against exploitation of any flaws in its implementation.","checkContent":"Verify that AlmaLinux OS 9 disables the ability to load the TIPC kernel module with the following command:\n\n$ grep -r tipc /etc/modprobe.conf /etc/modprobe.d/* \n\n/etc/modprobe.d/tipc.conf:install tipc /bin/false\n/etc/modprobe.d/tipc.conf:blacklist tipc\n\nIf the command does not return any output, or the line is commented out, and use of TIPC is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"To configure the system to prevent the TIPC kernel module from being loaded, run the following command:\n\n$ cat << EOF | tee /etc/modprobe.d/tipc.conf \ninstall tipc /bin/false\nblacklist tipc\nEOF","ccis":["CCI-000381"]},{"vulnId":"V-269348","ruleId":"SV-269348r1050230_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable mounting of udf.","description":"Removing support for unneeded filesystem types reduces the local attack surface of the server.\n\nThe UDF filesystem is used to write DVDs and so could assist in data exfiltration, the so-called \"sneakernet\".\n\nNote that Microsoft Azure uses UDF.","checkContent":"Verify that AlmaLinux OS 9 disables the ability to load the udf kernel module with the following command:\n\n$ grep udf /etc/modprobe.conf /etc/modprobe.d/* \n\nblacklist udf\n\nIf the command does not return any output, or the line is commented out, and use of UDF is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"To configure the system to prevent the udf kernel module from being loaded, create a *.conf file in /etc/modprobe.d/ with the following content:\n\ninstall udf /bin/false\nblacklist udf","ccis":["CCI-000381"]},{"vulnId":"V-269349","ruleId":"SV-269349r1050232_rule","severity":"medium","ruleTitle":"Cameras must be disabled or covered when not in use.","description":"It is detrimental for operating systems to provide, or install by default, functionality exceeding requirements or mission objectives. These unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors. \n \nFailing to disconnect from collaborative computing devices (i.e., cameras) can result in subsequent compromises of organizational information.\n\nProviding easy methods to physically disconnect from such devices after a collaborative computing session helps to ensure participants actually carry out the disconnect activity without having to go through complex and tedious procedures; it also ensures that microphones built into the cameras are also disabled.","checkContent":"Verify the operating system disables the ability to load the uvcvideo kernel module:\n\n$ grep -r uvcvideo /etc/modprobe.conf /etc/modprobe.d/* \n\n/etc/modprobe.d/uvcvideo.conf:install uvcvideo /bin/false\n/etc/modprobe.d/uvcvideo.conf:blacklist uvcvideo\n\nIf the command does not return any output, or either line is commented out, and the collaborative computing device has not been authorized for use, this is a finding.\n\nIf a built-in camera is not protected with a cover or is not physically disabled, this is a finding.\n\nFor an external camera, if there is not a method for the operator to manually disconnect the camera (e.g., unplug, power off) at the end of collaborative computing sessions, this is a finding.\n\nIf the device or operating system does not have a camera installed, this requirement is not applicable.","fixText":"To configure the system to prevent the uvcvideo kernel module from being loaded, run the following command:\n\n$ cat << EOF | tee /etc/modprobe.d/uvcvideo.conf \ninstall uvcvideo /bin/false\nblacklist uvcvideo\nEOF","ccis":["CCI-000381"]},{"vulnId":"V-269350","ruleId":"SV-269350r1050233_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have the nfs-utils package installed.","description":"\"nfs-utils\" provides a daemon for the kernel Network File System (NFS) server and related tools. This package also contains the \"showmount\" program. \"showmount\" queries the mount daemon on a remote host for information about the NFS server on the remote host. For example, \"showmount\" can display the clients that are mounted on that host.","checkContent":"Verify that the nfs-utils package is not installed with the following command:\n\n$ dnf list --installed nfs-utils\n\nError: No matching Packages to list\n\nIf the \"nfs-utils\" package is installed, this is a finding.","fixText":"Remove the nfs-utils package with the following command:\n\n$ dnf remove nfs-utils","ccis":["CCI-000381"]},{"vulnId":"V-269351","ruleId":"SV-269351r1050234_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have the rsh package installed.","description":"The \"rsh\" package provides a client for several obsolete and insecure network services. Removing it decreases the risk of accidental (or intentional) use of those services.","checkContent":"Verify that the rsh package is not installed with the following command:\n\n$ dnf list --installed rsh\n\nError: No matching Packages to list\n\nIf the \"rsh\" package is installed, this is a finding.","fixText":"Remove the rsh package with the following command:\n\n$ dnf remove rsh","ccis":["CCI-000381"]},{"vulnId":"V-269352","ruleId":"SV-269352r1134829_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not install packages from the Extra Packages for Enterprise Linux (EPEL) repository.","description":"The EPEL is a repository of high-quality open-source packages for enterprise-class Linux distributions such as RHEL, CentOS, AlmaLinux, Rocky Linux, and Oracle Linux. These packages are not part of the official distribution but are built using the same Fedora build system to ensure compatibility and maintain quality standards.","checkContent":"Verify that AlmaLinux OS 9 is not able to install packages from the EPEL with the following command:\n\n$ dnf repolist\nrepo id                                              repo name\nappstream                                            AlmaLinux 9 - AppStream\nbaseos                                               AlmaLinux 9 - BaseOS\nextras                                               AlmaLinux 9 - Extras\n\nIf any repositories containing the word \"epel\" in the name exist, this is a finding.","fixText":"The repo package can be manually removed with the following command:\n\n$ sudo dnf remove epel-release\n\nConfigure AlmaLinux 9 to disable use of the EPEL repository with the following command:\n\n$ sudo dnf config-manager --set-disabled epel","ccis":["CCI-000381"]},{"vulnId":"V-269353","ruleId":"SV-269353r1050236_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have the tuned package installed.","description":"The tuned package contains a daemon that tunes the system settings dynamically. It does so by monitoring the usage of several system components periodically. \n\nBased on that information, components will then be put into lower or higher power savings modes to adapt to the current usage. The tuned package is not needed for normal OS operations.","checkContent":"Verify that the tuned package is not installed with the following command:\n\n$ dnf list --installed tuned\n\nError: No matching Packages to list\n\nIf the \"tuned\" package is installed and is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"Remove the tuned package with the following command:\n\n$ dnf remove tuned","ccis":["CCI-000381"]},{"vulnId":"V-269354","ruleId":"SV-269354r1050237_rule","severity":"medium","ruleTitle":"A graphical display manager must not be installed on AlmaLinux OS 9 unless approved.","description":"Unnecessary service packages must not be installed to decrease the attack surface of the system. Graphical display managers have a long history of security vulnerabilities and must not be used, unless approved and documented.","checkContent":"Verify that a graphical user interface is not installed with the following command:\n\n$ dnf list --installed \"xorg-x11-server-common\"\n\nError: No matching Packages to list\n\nIf the \"xorg-x11-server-common\" package is installed, and the use of a graphical user interface has not been documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"Document the requirement for a graphical user interface with the ISSO or remove all xorg packages with the following command:\n\nWarning: If accessing the system through the graphical user interface, change to the multi-user.target with the following command:\n\n$ systemctl isolate multi-user.target\n\nWarning: Removal of the graphical user interface will immediately render it useless. The following commands must not be run from a virtual terminal emulator in the graphical interface.\n\n$ dnf remove \"xorg*\"\n$ systemctl set-default multi-user.target","ccis":["CCI-000381"]},{"vulnId":"V-269355","ruleId":"SV-269355r1155253_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have the ypserv package installed.","description":"The NIS service provides an unencrypted authentication service, which does not provide for the confidentiality and integrity of user passwords or the remote session.\n\nRemoving the \"ypserv\" package decreases the risk of the accidental (or intentional) activation of NIS or NIS+ services.","checkContent":"Verify the ypserv package is not installed with the following command:\n\n$ dnf list --installed ypserv\n\nError: No matching Packages to list\n\nIf the \"ypserv\" package is installed, this is a finding.","fixText":"Remove the ypserv package with the following command:\n\n$ dnf remove ypserv","ccis":["CCI-000381"]},{"vulnId":"V-269356","ruleId":"SV-269356r1050239_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have the avahi package installed.","description":"The avahi package provides the zeroconf capability to discover remote services such as printers and announce itself as a service for sharing files and devices.","checkContent":"Verify that the avahi package is not installed with the following command:\n\n$ dnf list –installed avahi\n\nError: No matching Packages to list\n\nIf the \"avahi\" package is installed, this is a finding.","fixText":"Remove the avahi package with the following command:\n\n$ dnf remove avahi","ccis":["CCI-000381"]},{"vulnId":"V-269357","ruleId":"SV-269357r1050240_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must be configured to disable USB mass storage.","description":"USB mass storage permits easy introduction of unknown devices, thereby facilitating malicious activity.\n\nSatisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000378-GPOS-00163, SRG-OS-000114-GPOS-00059, SRG-OS-000690-GPOS-00140","checkContent":"Verify that AlmaLinux OS 9 disables the ability to load the USB Storage kernel module with the following command:\n\n$ grep -r usb-storage /etc/modprobe.conf /etc/modprobe.d/* \n\n/etc/modprobe.d/usb-storage.conf:install usb-storage /bin/false\n/etc/modprobe.d/usb-storage.conf:blacklist usb-storage\n\nIf the command does not return any output, or the line is commented out, and use of usb-storage is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"To configure the system to prevent the usb-storage kernel module from being loaded, run the following command:\n\n$ cat << EOF | tee /etc/modprobe.d/usb-storage.conf \ninstall usb-storage /bin/false\nblacklist usb-storage\nEOF","ccis":["CCI-000381","CCI-001958","CCI-000778","CCI-003959"]},{"vulnId":"V-269358","ruleId":"SV-269358r1050241_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the firewalld package installed.","description":"\"Firewalld\" provides an easy and effective way to block/limit remote access to the system via ports, services, and protocols.\n\nRemote access services, such as those providing remote access to network devices and information systems, which lack automated control capabilities, increase risk and make remote user access management difficult at best.\n\nRemote access is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nAlmaLinux OS 9 functionality (e.g., SSH) must be capable of taking enforcement action if the audit reveals unauthorized activity. Automated control of remote access sessions allows organizations to ensure ongoing compliance with remote access policies by enforcing connection rules of remote access applications on a variety of information system components (e.g., servers, workstations, notebook computers, smartphones, and tablets).\n\nSatisfies: SRG-OS-000096-GPOS-00050, SRG-OS-000298-GPOS-00116, SRG-OS-000297-GPOS-00115","checkContent":"Verify that the firewalld package is installed with the following command:\n\n$ dnf list --installed firewalld\n\nInstalled Packages\nfirewalld.noarch       1.2.1-1.el9        @anaconda\n\nIf the \"firewalld\" package is not installed, this is a finding.","fixText":"Install the \"firewalld\" package using the following command:\n\n$ dnf install firewalld","ccis":["CCI-000382","CCI-002322","CCI-002314"]},{"vulnId":"V-269359","ruleId":"SV-269359r1101824_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must require users to provide authentication for privilege escalation.","description":"Without re-authentication, users may access resources or perform tasks for which they do not have authorization. \n\nWhen operating systems provide the capability to escalate a functional capability, it is critical the user re-authenticate.","checkContent":"Verify that \"/etc/sudoers\" has no occurrences of \"!authenticate\" with the following command:\n\n$ sudo egrep -iR '!authenticate' /etc/sudoers /etc/sudoers.d/\n\nIf any occurrences of \"!authenticate\" are returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to not allow users to execute privileged actions without authenticating.\n\nRemove any occurrence of \"!authenticate\" found in the \"/etc/sudoers\" file or files in the \"/etc/sudoers.d\" directory with the following command:\n\n$ sed -i '/\\!authenticate/ s/^/# /g' /etc/sudoers /etc/sudoers.d/*","ccis":["CCI-002234"]},{"vulnId":"V-269360","ruleId":"SV-269360r1101822_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must require users to provide a password for privilege escalation.","description":"Without re-authentication, users may access resources or perform tasks for which they do not have authorization. \n\nWhen operating systems provide the capability to escalate a functional capability, it is critical the user re-authenticate.","checkContent":"Verify that the sudo configuration files have no occurrences of \"NOPASSWD\" with the following command:\n\n$ sudo grep -iR 'NOPASSWD' /etc/sudoers /etc/sudoers.d/\n\nIf any occurrences of \"NOPASSWD\" are returned from the command and have not been documented with the information systems security officer (ISSO) as an organizationally defined administrative group using multifactor authentication (MFA), this is a finding.","fixText":"Configure AlmaLinux OS 9 to not allow users to execute privileged actions without authenticating with a password.\n\nRemove any occurrence of \"NOPASSWD\" found in the \"/etc/sudoers\" file or files in the \"/etc/sudoers.d\" directory using the following command:\n\n$ sed -i '/NOPASSWD/ s/^/# /g' /etc/sudoers /etc/sudoers.d/*","ccis":["CCI-002234"]},{"vulnId":"V-269361","ruleId":"SV-269361r1050244_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not be configured to bypass password requirements for privilege escalation.","description":"Without re-authentication, users may access resources or perform tasks for which they do not have authorization. \n\nWhen operating systems provide the capability to escalate a functional capability, it is critical the user re-authenticate.","checkContent":"Verify the operating system is not configured to bypass password requirements for privilege escalation with the following command:\n\n$ grep pam_succeed_if /etc/pam.d/sudo \n\nIf any occurrences of \"pam_succeed_if\" are returned, this is a finding.","fixText":"Configure the operating system to require users to supply a password for privilege escalation.\n\nRemove any occurrences of \" pam_succeed_if \" in the  \"/etc/pam.d/sudo\" file.","ccis":["CCI-002234"]},{"vulnId":"V-269362","ruleId":"SV-269362r1050245_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must require reauthentication when using the \"sudo\" command.","description":"Without re-authentication, users may access resources or perform tasks for which they do not have authorization. \n\nWhen operating systems provide the capability to escalate a functional capability, it is critical the user re-authenticate.","checkContent":"Verify AlmaLinux OS 9 requires reauthentication when using the \"sudo\" command to elevate privileges with the following command:\n\n$ grep timestamp_timeout /etc/sudoers /etc/sudoers.d/*\n\n/etc/sudoers.d/01_stig:Defaults timestamp_timeout=0\n\nIf \"timestamp_timeout\" is set to a negative number, is commented out, conflicting results or no results are returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to reauthenticate \"sudo\" commands after the specified timeout:\n\nAdd the following line to \"/etc/sudoers\" or a file within \"/etc/sudoers.d/\":\n\nDefaults timestamp_timeout=0","ccis":["CCI-002234"]},{"vulnId":"V-269363","ruleId":"SV-269363r1050246_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must restrict the use of the \"su\" command.","description":"The \"su\" program provides a \"switch user\" capability. It is commonly used to become root but can be used to switch to any user.\n\nLimiting access to such commands is considered a good security practice.\n\nSatisfies: SRG-OS-000109-GPOS-00056, SRG-OS-000312-GPOS-00124, SRG-OS-000312-GPOS-00122, SRG-OS-000312-GPOS-00123","checkContent":"Verify that AlmaLinux OS 9 requires uses to be members of the \"wheel\" group with the following command:\n\n$ grep pam_wheel /etc/pam.d/su \n\nauth             required        pam_wheel.so use_uid \n\nIf a line for \"pam_wheel.so\" does not exist, or is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to require users to be in the \"wheel\" group to run \"su\" command.\n\nIn the \"/etc/pam.d/su\" file, uncomment the \"pam_wheel.so\" line as per the instructions in the file:\n\n# Uncomment the following line to require a user to be in the \"wheel\" group.\n#auth required pam_wheel.so use_uid\n\nIf necessary, create a \"wheel\" group and add administrative users to the group.","ccis":["CCI-004045","CCI-002165"]},{"vulnId":"V-269364","ruleId":"SV-269364r1050247_rule","severity":"medium","ruleTitle":"Groups must have unique Group IDs (GIDs).","description":"To ensure accountability and prevent unauthenticated access, organizational users must be identified and authenticated to prevent potential misuse and compromise of the system.\n\nOrganizational users include organizational employees or individuals the organization deems to have equivalent status of employees (e.g., contractors). Organizational users (and processes acting on behalf of users) must be uniquely identified and authenticated to all accesses, except for the following: \n\n1) Accesses explicitly identified and documented by the organization. Organizations document specific user actions that can be performed on the information system without identification or authentication; and\n\n2) Accesses that occur through authorized use of group authenticators without individual authentication. Organizations may require unique identification of individuals in group accounts (e.g., shared privilege accounts) or for detailed accountability of individual activity.","checkContent":"Verify that AlmaLinux OS 9 contains no duplicate GIDs with the following command:\n\n$ cut -f3 -d\":\" /etc/group | uniq -d\n\nIf the system has duplicate GIDs, this is a finding.","fixText":"Provide each group that has a duplicate GID with a unique GID using the \"groupmod\" command, for example:\n\n$ groupmod -g 1002 mygroup","ccis":["CCI-000764"]},{"vulnId":"V-269365","ruleId":"SV-269365r1050248_rule","severity":"medium","ruleTitle":"Duplicate User IDs (UIDs) must not exist for interactive users.","description":"To ensure accountability and prevent unauthenticated access, organizational users must be identified and authenticated to prevent potential misuse and compromise of the system.\n\nOrganizational users include organizational employees or individuals the organization deems to have equivalent status of employees (e.g., contractors). Organizational users (and processes acting on behalf of users) must be uniquely identified and authenticated to all accesses, except for the following: \n\n1) Accesses explicitly identified and documented by the organization. Organizations document specific user actions that can be performed on the information system without identification or authentication; and\n\n2) Accesses that occur through authorized use of group authenticators without individual authentication. Organizations may require unique identification of individuals in group accounts (e.g., shared privilege accounts) or for detailed accountability of individual activity.\n\nSatisfies: SRG-OS-000104-GPOS-00051, SRG-OS-000121-GPOS-00062","checkContent":"Verify that AlmaLinux OS 9 contains no duplicate UIDs for interactive users with the following command:\n\n$ cut -f3 -d\":\" /etc/passwd | uniq -d\n\nIf output is produced and the UIDs listed are for interactive user accounts, this is a finding.","fixText":"Provide each interactive user that has a duplicate UID with a unique UID using the \"usermod\" command, for example:\n\n$ usermod -u 1002 myuser","ccis":["CCI-000764","CCI-000804"]},{"vulnId":"V-269366","ruleId":"SV-269366r1050249_rule","severity":"medium","ruleTitle":"All AlmaLinux OS 9 interactive users must have a primary group that exists.","description":"If a user is assigned the Group Identifier (GID) of a group that does not exist on the system, and a group with the GID is subsequently created, the user may have unintended rights to any files associated with the group.","checkContent":"Verify that all AlmaLinux OS 9 interactive users have a valid GID with the following command:\n \n$ pwck -r /etc/passwd\n \nIf the system has any interactive users with a nonexistent primary group, this is a finding.","fixText":"Configure the system so that all GIDs referenced in \"/etc/passwd\" are defined in \"/etc/group\".","ccis":["CCI-000764"]},{"vulnId":"V-269367","ruleId":"SV-269367r1050250_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 SSHD must accept public key authentication.","description":"Without the use of multifactor authentication, the ease of access to privileged functions is greatly increased.\n\nMultifactor authentication requires using two or more factors to achieve authentication.\n\nFactors include: \n1) something a user knows (e.g., password/PIN);\n2) something a user has (e.g., cryptographic identification device, token); and\n3) something a user is (e.g., biometric).\n\nA privileged account is defined as an information system account with authorizations of a privileged user.\n\nNetwork access is defined as access to an information system by a user (or a process acting on behalf of a user) communicating through a network (e.g., local area network, wide area network, or the internet).\n\nThe DOD CAC with DOD-approved PKI is an example of multifactor authentication.","checkContent":"Note: If the system administrator (SA) demonstrates the use of an approved alternate multifactor authentication method, this requirement is Not Applicable.\n\nVerify that AlmaLinux OS 9 SSH daemon accepts public key encryption with the following command:\n \n$ sshd -T | grep -i pubkeyauthentication\n\npubkeyauthentication yes\n \nIf \"PubkeyAuthentication\" is set to no, or the line is missing, this is a finding.","fixText":"Configure the SSH daemon to accept public key encryption.\n\nAdd the following line to \"/etc/ssh/sshd_config\", or uncomment the line and set the value to \"yes\":\n\nPubkeyAuthentication yes\n\nAlternatively, add the setting to an include file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\n$ cat << EOF | tee /etc/ssh/sshd_config.d/pubkey.conf\nPubkeyAuthentication yes\nEOF\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-000765"]},{"vulnId":"V-269368","ruleId":"SV-269368r1050614_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the opensc package installed.","description":"Using an authentication device, such as a CAC or token that is separate from the information system, ensures that even if the information system is compromised, that compromise will not affect credentials stored on the authentication device.\n\nMultifactor solutions that require devices separate from information systems gaining access include, for example, hardware tokens providing time-based or challenge-response authenticators and smart cards such as the U.S. Government Personal Identity Verification card and the DOD Common Access Card.\n\nA privileged account is defined as an information system account with authorizations of a privileged user.\n\nRemote access is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nThis requirement only applies to components where this is specific to the function of the device or has the concept of an organizational user (e.g., VPN, proxy capability). This does not apply to authentication for the purpose of configuring the device itself (management).\n\nThis requires further clarification from NIST.","checkContent":"Verify that AlmaLinux OS 9 has the opensc package installed with the following command:\n\n$ dnf list --installed opensc\n\nInstalled Packages\nopensc.x86_64         0.22.0-2.el9               @anaconda\n\nIf the \"opensc\" package is not installed, this is a finding.","fixText":"The opensc package can be installed with the following command:\n \n$ dnf install opensc","ccis":["CCI-004046"]},{"vulnId":"V-269369","ruleId":"SV-269369r1050615_rule","severity":"medium","ruleTitle":"The pcscd socket on AlmaLinux OS 9 must be active.","description":"Using an authentication device, such as a CAC or token that is separate from the information system, ensures that even if the information system is compromised, that compromise will not affect credentials stored on the authentication device.\n\nMultifactor solutions that require devices separate from information systems gaining access include, for example, hardware tokens providing time-based or challenge-response authenticators and smart cards such as the U.S. Government Personal Identity Verification card and the DOD Common Access Card.\n\nA privileged account is defined as an information system account with authorizations of a privileged user.\n\nRemote access is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nThis requirement only applies to components where this is specific to the function of the device or has the concept of an organizational user (e.g., VPN, proxy capability). This does not apply to authentication for the purpose of configuring the device itself (management).\n\nThis requires further clarification from NIST.","checkContent":"Verify that the \"pcscd\" socket is active with the following command:\n\n$ systemctl status pcscd.socket\n\npcscd.socket - PC/SC Smart Card Daemon Activation Socket\n     Loaded: loaded (/usr/lib/systemd/system/pcscd.socket; enabled; preset: enabled)\n     Active: active (listening) since Thu 2024-04-11 16:03:24 BST; 2 weeks 3 days ago\n   Triggers: pcscd.service\n     Listen: /run/pcscd/pcscd.comm (Stream)\n     CGroup: /system.slice/pcscd.socket\n\nIf the pcscd.socket is not active, this is a finding.","fixText":"To enable pcscd run the following command:\n\n$ systemctl enable --now pcscd.socket\n$ systemctl enable --now pcscd.service\n\nThe pcscd service will be enabled when software tries to access the socket.","ccis":["CCI-004046"]},{"vulnId":"V-269370","ruleId":"SV-269370r1050616_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the pcsc-lite package installed.","description":"Using an authentication device, such as a CAC or token that is separate from the information system, ensures that even if the information system is compromised, that compromise will not affect credentials stored on the authentication device.\n\nMultifactor solutions that require devices separate from information systems gaining access include, for example, hardware tokens providing time-based or challenge-response authenticators and smart cards such as the U.S. Government Personal Identity Verification card and the DOD Common Access Card.\n\nA privileged account is defined as an information system account with authorizations of a privileged user.\n\nRemote access is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nThis requirement only applies to components where this is specific to the function of the device or has the concept of an organizational user (e.g., VPN, proxy capability). This does not apply to authentication for the purpose of configuring the device itself (management).\n\nThis requires further clarification from NIST.","checkContent":"Note: If the System Administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is Not Applicable.\n\nVerify that AlmaLinux OS 9 has the pcsc-lite package installed with the following command:\n\n$ dnf list --installed pcsc-lite\n\nInstalled Packages\npcsc-lite.x86_64         1.9.4-1.el9             @anaconda\n\nIf the \"pcsc-lite\" package is not installed, this is a finding.","fixText":"The  pcsc-lite  package can be installed with the following command:\n \n$ dnf install pcsc-lite","ccis":["CCI-004046"]},{"vulnId":"V-269371","ruleId":"SV-269371r1050254_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must implement certificate status checking for multifactor authentication.","description":"Using an authentication device, such as a DOD Common Access Card (CAC) or token that is separate from the information system, ensures that even if the information system is compromised, credentials stored on the authentication device will not be affected.\n\nMultifactor solutions that require devices separate from information systems gaining access include, for example, hardware tokens providing time-based or challenge-response authenticators and smart cards such as the U.S. Government Personal Identity Verification (PIV) card and the DOD CAC.\n\nAlmaLinux OS 9 includes multiple options for configuring certificate status checking, but for this requirement focuses on the System Security Services Daemon (SSSD). By default, SSSD performs Online Certificate Status Protocol (OCSP) checking and certificate verification using a sha256 digest function.","checkContent":"Note: If the system administrator (SA) demonstrates the use of an approved alternate multifactor authentication method, this requirement is Not Applicable.\n\nVerify the operating system implements Online Certificate Status Protocol (OCSP) and is using the proper digest value on the system with the following command:\n\n$ grep certificate_verification /etc/sssd/sssd.conf /etc/sssd/conf.d/*.conf \n\n/etc/sssd/conf.d/certificate_verification.conf:certificate_verification = ocsp_dgst=sha512\n\nIf the certificate_verification line is missing from the [sssd] section, or is missing \"ocsp_dgst=sha512\", ask the administrator to indicate what type of multifactor authentication is being used and how the system implements certificate status checking. If there is no evidence of certificate status checking being used, this is a finding.","fixText":"Edit the file \"/etc/sssd/sssd.conf\" or a \"*.conf\" file within the \"/etc/sssd/conf.d/\" directory and add or edit the following line within the [sssd] section:\n\ncertificate_verification = ocsp_dgst=sha512","ccis":["CCI-004046"]},{"vulnId":"V-269372","ruleId":"SV-269372r1050617_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enable certificate based smart card authentication.","description":"Using an authentication device, such as a CAC or token that is separate from the information system, ensures that even if the information system is compromised, that compromise will not affect credentials stored on the authentication device.\n\nMultifactor solutions that require devices separate from information systems gaining access include, for example, hardware tokens providing time-based or challenge-response authenticators and smart cards such as the U.S. Government Personal Identity Verification card and the DOD Common Access Card.\n\nA privileged account is defined as an information system account with authorizations of a privileged user.\n\nRemote access is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nThis requirement only applies to components where this is specific to the function of the device or has the concept of an organizational user (e.g., VPN, proxy capability). This does not apply to authentication for the purpose of configuring the device itself (management).\n\nThis requires further clarification from NIST.\n\nSatisfies: SRG-OS-000375-GPOS-00160, SRG-OS-000105-GPOS-00052, SRG-OS-000705-GPOS-00150","checkContent":"Note: If the System Administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is Not Applicable.\n\nVerify that AlmaLinux OS 9 has smart cards are enabled in System Security Services Daemon (SSSD), run the following command:\n\n$ grep pam_cert_auth /etc/sssd/sssd.conf /etc/sssd/conf.d/*.conf \n\n/etc/sssd/conf.d/certificate_verification.conf:pam_cert_auth = True\n\nIf \"pam_cert_auth\" is not set to \"True\", the line is commented out, or the line is missing, this is a finding.","fixText":"Edit the file \"/etc/sssd/sssd.conf\" or a \"*.conf\" file within the \"/etc/sssd/conf.d/\" directory and add or edit the following line within the [pam] section:\n\npam_cert_auth = True","ccis":["CCI-004046","CCI-000765","CCI-004047"]},{"vulnId":"V-269373","ruleId":"SV-269373r1050256_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the openssl-pkcs11 package installed.","description":"The use of PIV credentials facilitates standardization and reduces the risk of unauthorized access.\n\nDOD has mandated the use of the CAC to support identity management and personal authentication for systems covered under Homeland Security Presidential Directive (HSPD) 12, as well as making the CAC a primary component of layered protection for national security systems.\n\nSatisfies: SRG-OS-000377-GPOS-00162, SRG-OS-000376-GPOS-00161, SRG-OS-000375-GPOS-00160, SRG-OS-000105-GPOS-00052","checkContent":"Note: If the System Administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is Not Applicable.\n\nVerify that AlmaLinux OS 9 has the openssl-pkcs11 package installed with the following command:\n\n$ dnf list --installed openssl-pkcs11\n\nInstalled Packages\nopenssl-pkcs11.x86_64                 0.4.11-7.el9            @baseos\n\nIf the \"openssl-pkcs11\" package is not installed, this is a finding.","fixText":"The openssl-pkcs11 package can be installed with the following command:\n \n$ dnf install openssl-pkcs11","ccis":["CCI-001954","CCI-001953","CCI-004046","CCI-000765"]},{"vulnId":"V-269374","ruleId":"SV-269374r1050257_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 SSHD must not allow blank passwords.","description":"If an account has an empty password, anyone could log on and run commands with the privileges of that account. \n\nAccounts with empty passwords should never be used in operational environments.\n\nSatisfies: SRG-OS-000106-GPOS-00053, SRG-OS-000108-GPOS-00055","checkContent":"Verify AlmaLinux OS 9 remote access using SSH prevents logging on with a blank password with the following command:\n \n$ sshd -T | grep -i permitemptypasswords\n\npermitemptypasswords no\n\nIf \"PermitEmptyPasswords\" is set to \"yes\", or the line is missing, this is a finding.","fixText":"Configure the SSH daemon to prevent users logging in with blank passwords.\n\nAdd the following line to \"/etc/ssh/sshd_config\", or uncomment the line and set the value to \"yes\":\n\nPermitEmptyPasswords no\n\nAlternatively, add the setting to an include file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\n$ cat << EOF | tee /etc/ssh/sshd_config.d/emptypasswords.conf\nPermitEmptyPasswords no\nEOF\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-000766"]},{"vulnId":"V-269375","ruleId":"SV-269375r1050258_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must use the CAC smart card driver.","description":"Smart card login provides two-factor authentication stronger than that provided by a username and password combination. \n\nSmart cards leverage public key infrastructure to provide and verify credentials. \n\nConfiguring the smart card driver in use by the organization helps to prevent users from using unauthorized smart cards.\n\nSatisfies: SRG-OS-000107-GPOS-00054, SRG-OS-000108-GPOS-00055, SRG-OS-000112-GPOS-00057, SRG-OS-000113-GPOS-00058","checkContent":"Verify that AlmaLinux OS 9 loads the CAC driver with the following command:\n\n$ grep card_drivers /etc/opensc.conf\n\ncard_drivers = cac; \n\nIf \"cac\" is not listed as a card driver, or there is no line returned for \"card_drivers\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to load the CAC driver.\n\nAdd or modify the following line in the \"/etc/opensc.conf\" file:\n\ncard_drivers = cac;","ccis":["CCI-000765","CCI-000766","CCI-001941"]},{"vulnId":"V-269376","ruleId":"SV-269376r1050259_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not permit direct logons to the root account using remote access via SSH.","description":"Even though the communications channel may be encrypted, an additional layer of security is gained by extending the policy of not logging directly on as root.\n\nIn addition, logging in with a user-specific account provides individual accountability of actions performed on the system.\n\nThe root account is a known default username, so should not allow direct login as half of the username/password combination is known, making it vulnerable to brute-force password guessing attacks.","checkContent":"Verify AlmaLinux OS 9 prevents users from logging on directly as \"root\" over SSH with the following command:\n\n$ sshd -T |grep -I permitrootlogin\n\npermitrootlogin no\n\nIf the \"PermitRootLogin\" keyword is set to \"yes\" or \"without-password\", this is a finding.","fixText":"To configure the system to prevent users from logging on directly as root over SSH, add or modify the following line in \"/etc/ssh/sshd_config\":\n\nPermitRootLogin no\n\nAlternatively, add the setting to an include file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\n$ echo \"PermitRootLogin no\" > /etc/ssh/sshd_config.d/root.conf\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-004045"]},{"vulnId":"V-269377","ruleId":"SV-269377r1050260_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable the graphical user interface automount function unless required.","description":"Automatically mounting file systems permits easy introduction of unknown devices, thereby facilitating malicious activity.\n\nSatisfies: SRG-OS-000378-GPOS-00163, SRG-OS-000114-GPOS-00059","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 disables the graphical user interface automount function with the following command:\n\n$ gsettings get org.gnome.desktop.media-handling automount-open \n\nfalse\n\nIf \"automount-open\" is set to \"true\", and is not documented with the information system security officer (ISSO) as an operational requirement, this is a finding.","fixText":"Configure the GNOME desktop to disable automated mounting of removable media.\n\nThe dconf settings can be edited in the /etc/dconf/db/* location.\n\nUpdate the [org/gnome/desktop/media-handling] section of the \"/etc/dconf/db/local.d/00-security-settings\" database file and add or update the following lines:\n\n[org/gnome/desktop/media-handling]\nautomount-open=false\n\nThen update the dconf system databases:\n\n$ dconf update","ccis":["CCI-001958","CCI-000778"]},{"vulnId":"V-269378","ruleId":"SV-269378r1050261_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent a user from overriding the disabling of the graphical user interface automount function.","description":"Automatically mounting file systems permits easy introduction of unknown devices, thereby facilitating malicious activity.\n\nSatisfies: SRG-OS-000378-GPOS-00163, SRG-OS-000114-GPOS-00059","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 disables ability of the user to override the graphical user interface automount setting.\n\nDetermine which profile the system database is using with the following command:\n\n$ grep system-db /etc/dconf/profile/user\n\nsystem-db:local\n\nCheck that the automount setting is locked from nonprivileged user modification with the following command:\n\nNote: The example below is using the database \"local\" for the system, so the path is \"/etc/dconf/db/local.d\". This path must be modified if a database other than \"local\" is being used.\n\n$ grep 'automount-open' /etc/dconf/db/local.d/locks/* \n\n/org/gnome/desktop/media-handling/automount-open\n\nIf the command does not return at least the example result, this is a finding.","fixText":"Configure the GNOME desktop to not allow a user to change the setting that disables automated mounting of removable media.\n\nAdd the following line to \"/etc/dconf/db/local.d/locks/00-security-settings-lock\" to prevent user modification:\n\n/org/gnome/desktop/media-handling/automount-open\n\nThen update the dconf system databases:\n\n$ dconf update","ccis":["CCI-001958","CCI-000778"]},{"vulnId":"V-269379","ruleId":"SV-269379r1050262_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent a user from overriding the disabling of the graphical user interface autorun function.","description":"Automatically mounting filesystems and running applications upon insertion of a device facilitates malicious activity.\n\nSatisfies: SRG-OS-000378-GPOS-00163, SRG-OS-000114-GPOS-00059","checkContent":"Note: This requirement assumes the use of the AlmaLinux OS 9 default graphical user interface, the GNOME desktop environment. If the system does not have any graphical user interface installed, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 disables ability of the user to override the graphical user interface autorun setting.\n\nDetermine which profile the system database is using with the following command:\n\n$ grep system-db /etc/dconf/profile/user\n\nsystem-db:local\n\nCheck that the automount setting is locked from nonprivileged user modification with the following command:\n\nNote: The example below is using the database \"local\" for the system, so the path is \"/etc/dconf/db/local.d\". This path must be modified if a database other than \"local\" is being used.\n\n$ grep 'autorun-never' /etc/dconf/db/local.d/locks/* \n\n/org/gnome/desktop/media-handling/autorun-never\n\nIf the command does not return at least the example result, this is a finding.","fixText":"Configure the GNOME desktop to not allow a user to change the setting that disables autorun on removable media.\n\nAdd the following line to \"/etc/dconf/db/local.d/locks/00-security-settings-lock\" to prevent user modification:\n\n/org/gnome/desktop/media-handling/autorun-never\n\nThen update the dconf system databases:\n\n$ dconf update","ccis":["CCI-001958","CCI-000778"]},{"vulnId":"V-269380","ruleId":"SV-269380r1050263_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the USBGuard package installed.","description":"The USBGuard-daemon is the main component of the USBGuard software framework. It runs as a service in the background and enforces the USB device authorization policy for all USB devices. The policy is defined by a set of rules using a rule language described in the usbguard-rules.conf file. The policy and the authorization state of USB devices can be modified during runtime using the USBGuard tool.\n\nThe system administrator (SA) must work with the site information system security officer (ISSO) to determine a list of authorized peripherals and establish rules within the USBGuard software framework to allow only authorized devices.","checkContent":"Note: If the system is virtual machine with no virtual or physical USB peripherals attached, this is not a finding.\n\nVerify USBGuard is installed on the operating system with the following command:\n\n$ dnf list installed usbguard\n\nInstalled Packages\nusbguard.x86_64             1.0.0-15.el9                @AppStream\n\nIf the USBGuard package is not installed, ask the SA to indicate how unauthorized peripherals are being blocked.\n\nIf there is no evidence that unauthorized peripherals are being blocked before establishing a connection, this is a finding.","fixText":"Install the usbguard package with the following command:\n\n$ dnf install usbguard","ccis":["CCI-001958"]},{"vulnId":"V-269381","ruleId":"SV-269381r1050264_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the USBGuard package enabled.","description":"The USBGuard-daemon is the main component of the USBGuard software framework. It runs as a service in the background and enforces the USB device authorization policy for all USB devices. The policy is defined by a set of rules using a rule language described in the usbguard-rules.conf file. The policy and the authorization state of USB devices can be modified during runtime using the USBGuard tool.\n\nThe system administrator (SA) must work with the site information system security officer (ISSO) to determine a list of authorized peripherals and establish rules within the USBGuard software framework to allow only authorized devices.","checkContent":"Note: If the system is virtual machine with no virtual or physical USB peripherals attached, this is not a finding.\n\nVerify AlmaLinux OS 9 has USBGuard enabled with the following command:\n\n$ systemctl status usbguard\n\n usbguard.service - USBGuard daemon\n     Loaded: loaded (/usr/lib/systemd/system/usbguard.service; enabled; preset: disabled)\n     Active: active (running) since Thu 2024-02-08 09:42:05 UTC; 1h 24min ago\n\nIf USBGuard is not active, ask the SA to indicate how unauthorized peripherals are being blocked.\n\nIf there is no evidence that unauthorized peripherals are being blocked before establishing a connection, this is a finding.","fixText":"To enable the USBGuard service run the following command:\n\n$ systemctl enable --now usbguard","ccis":["CCI-001958"]},{"vulnId":"V-269382","ruleId":"SV-269382r1050265_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must block unauthorized peripherals before establishing a connection.","description":"The USBGuard-daemon is the main component of the USBGuard software framework. It runs as a service in the background and enforces the USB device authorization policy for all USB devices. The policy is defined by a set of rules using a rule language described in the usbguard-rules.conf file. The policy and the authorization state of USB devices can be modified during runtime using the USBGuard tool.\n\nThe system administrator (SA) must work with the site information system security officer (ISSO) to determine a list of authorized peripherals and establish rules within the USBGuard software framework to allow only authorized devices.","checkContent":"Note: If the system is virtual machine with no virtual or physical USB peripherals attached, this is not a finding.\n\nVerify the USBGuard has a policy configured with the following command:\n\n$ usbguard list-rules\n\n1: allow id 1d6b:0002 serial \"0000:03:00.0\" name \"xHCI Host Controller\" with-interface 09:00:00 with-connect-type \"\"\n2: allow id 1d6b:0003 serial \"0000:03:00.0\" name \"xHCI Host Controller\" with-interface 09:00:00 with-connect-type \"\"\n3: allow id 0627:0001 serial \"28754-0000:00:02.2:00.0-1\" name \"QEMU USB Tablet\" with-interface 03:00:00 with-connect-type \"unknown\"\n\nIf the command does not return results or an error is returned, ask the SA to indicate how unauthorized peripherals are being blocked.\n\nIf there is no evidence that unauthorized peripherals are being blocked before establishing a connection, this is a finding.","fixText":"Configure the operating system to enable the blocking of unauthorized peripherals with the following command:\n\nNote: This command will create an allow list for any USB devices currently connect to the system.\n\n$ usbguard generate-policy --no-hashes | tee /etc/usbguard/rules.conf\n\nNote: Enabling and starting USBGuard without properly configuring it for an individual system will immediately prevent any access over a USB device such as a keyboard or mouse.","ccis":["CCI-001958"]},{"vulnId":"V-269383","ruleId":"SV-269383r1050266_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not have the autofs package installed.","description":"Without authenticating devices, unidentified or unknown devices may be introduced, thereby facilitating malicious activity. Bidirectional authentication provides stronger safeguards to validate the identity of other devices for connections that are of greater risk.\n\nBidirectional authentication solutions include, but are not limited to, IEEE 802.1x and Extensible Authentication Protocol (EAP), RADIUS server with EAP-Transport Layer Security (TLS) authentication, Kerberos, and SSL mutual authentication.\n\nA local connection is any connection with a device communicating without the use of a network. A network connection is any connection with a device that communicates through a network (e.g., local area network, wide area network, or the internet). A remote connection is any connection with a device communicating through an external network (e.g., the internet).\n\nBecause of the challenges of applying this requirement on a large scale, organizations are encouraged to only apply this requirement to those limited number (and type) of devices that truly need to support this capability.\n\nSatisfies: SRG-OS-000379-GPOS-00164, SRG-OS-000114-GPOS-00059","checkContent":"Note: If the autofs service is not installed, this requirement is Not Applicable.\n\nVerify that the autofs package is not installed with the following command:\n\n$ dnf list --installed autofs\n\nError: No matching Packages to list\n\nIf the \"autofs\" package is installed, and is not documented as an operational requirement with the information system security officer (ISSO), this is a finding.","fixText":"Remove the autofs package with the following command:\n\n$ dnf remove autofs","ccis":["CCI-001967","CCI-000778"]},{"vulnId":"V-269384","ruleId":"SV-269384r1050267_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable account identifiers (individuals, groups, roles, and devices) after 35 days of inactivity.","description":"Inactive identifiers pose a risk to systems and applications because attackers may exploit an inactive identifier and potentially obtain undetected access to the system.\n\nAutomatically disabling inactive accounts ensures that accounts which may not have been responsibly removed are not available to threat actors who may have compromised their credentials.\n\nOwners of inactive accounts will not notice if unauthorized access to their user account has been obtained.","checkContent":"Verify that AlmaLinux OS 9 account identifiers (individuals, groups, roles, and devices) are disabled after 35 days of inactivity with the following command:\n\n$ useradd -D | grep INACTIVE\n\nINACTIVE=35\n\nIf the value of \"INACTIVE\" is set to \"-1\", a value greater than \"35\", or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to disable account identifiers after 35 days of inactivity after the password expiration. \n\nRun the following command to change the configuration for useradd:\n\n$ useradd -D -f 35\n\nThe recommendation is 35 days, but a lower value is acceptable.","ccis":["CCI-000795"]},{"vulnId":"V-269385","ruleId":"SV-269385r1050268_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enforce password complexity by requiring that at least one lowercase character be used.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. \n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.","checkContent":"Verify that AlmaLinux OS 9 enforces password complexity by requiring at least one lowercase character with the following command:\n\n$ grep -r lcredit /etc/security/pwquality.conf*\n\n/etc/security/pwquality.conf.d/stig.conf:lcredit = -1\n\nIf the value of \"lcredit\" is a positive number, is not set, is commented out, or if conflicting results are returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enforce password complexity by requiring at least one lowercase character be used by setting the \"lcredit\" option.\n\nAdd or update the following line in the \"/etc/security/pwquality.conf\" file or a configuration file in the \"/etc/security/pwquality.conf.d/\" directory:\n\nlcredit = -1\n\nRemove any configurations that conflict with the above value.","ccis":["CCI-004066"]},{"vulnId":"V-269386","ruleId":"SV-269386r1050269_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must ensure the password complexity module is enabled in the password-auth file.","description":"Enabling PAM password complexity permits enforcement of strong passwords and consequently makes the system less prone to dictionary attacks.","checkContent":"Verify AlmaLinux OS 9 uses \"pwquality\" to enforce the password complexity rules in the password-auth file with the following command:\n\nCheck for the use of the \"pwquality\" module in the PAM auth files with the following command:\n\n$ grep pam_pwquality.so /etc/pam.d/system-auth /etc/pam.d/password-auth\n\n/etc/pam.d/system-auth:password    required                                     pam_pwquality.so retry=3\n/etc/pam.d/password-auth:password    required                                     pam_pwquality.so retry=3\n\n\nIf the command does not return a line in each file containing the value \"pam_pwquality.so\", or the line is commented out, this is a finding.\n\nIf the system administrator (SA) can demonstrate that the required configuration is contained in a PAM configuration file included or substacked from the system-auth file, this is not a finding.","fixText":"Configure AlmaLinux OS 9 to use \"pwquality\" to enforce password complexity rules.\n\nAdd the following line to the \"/etc/pam.d/system-auth\" and \"/etc/pam.d/password-auth\" files (or modify the line to have the required value):\n\npassword required pam_pwquality.so retry=3","ccis":["CCI-004066"]},{"vulnId":"V-269387","ruleId":"SV-269387r1050270_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must ensure the password complexity module in the system-auth file is configured for three retries or less.","description":"AlmaLinux OS 9 uses \"pwquality\" as a mechanism to enforce password complexity. This is set in both:\n/etc/pam.d/password-auth\n/etc/pam.d/system-auth\n\nBy limiting the number of attempts to meet the pwquality module complexity requirements before returning with an error, the system will audit abnormal attempts at password changes.","checkContent":"Verify AlmaLinux OS 9 is configured to limit the \"pwquality\" retry option to \"3\". \n\nCheck for the use of the \"pwquality\" retry option in the PAM auth files with the following command:\n\n$ grep pam_pwquality.so /etc/pam.d/system-auth /etc/pam.d/password-auth\n\n/etc/pam.d/system-auth:password    required                                     pam_pwquality.so retry=3\n/etc/pam.d/password-auth:password    required                                     pam_pwquality.so retry=3\n\nIf the value of \"retry\" is set to \"0\" or greater than \"3\", or is missing from either, this is a finding.\n\nIf the system administrator (SA) can demonstrate that the required configuration is contained in a PAM configuration file included or substacked from the system-auth file, this is not a finding.","fixText":"Configure AlmaLinux OS 9 to limit the \"pwquality\" retry option to \"3\".\n\nAdd the following line to the \"/etc/pam.d/system-auth\" and \"/etc/pam.d/password-auth\" files (or modify the line to have the required value):\n\npassword required pam_pwquality.so retry=3","ccis":["CCI-004066"]},{"vulnId":"V-269388","ruleId":"SV-269388r1155272_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enforce password complexity rules for the root account.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks.\n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.","checkContent":"Verify AlmaLinux OS 9 enforces password complexity rules for the root account.\n\nCheck if root user is required to use complex passwords with the following command:\n\n$ grep -r enforce_for_root /etc/security/pwquality.conf*\n\n/etc/security/pwquality.conf:# enforce_for_root\n/etc/security/pwquality.conf.d/stig.conf:enforce_for_root\n\nIf \"enforce_for_root\" is commented or missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enforce password complexity on the root account.\n\nAdd or update the following line in /etc/security/pwquality.conf:\n\nenforce_for_root\n\nNote: Unlike most Linux tools, pam_pwquality does not override its defaults with those in a drop-in file, so edit /etc/security/pwquality.conf and not use a file in /etc/security/pwquality.conf.d/ or comment out the setting in /etc/security/pwquality.conf if using a drop-in file.","ccis":["CCI-004066"]},{"vulnId":"V-269389","ruleId":"SV-269389r1050272_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enforce password complexity by requiring that at least one uppercase character be used.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. \n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.","checkContent":"Verify that AlmaLinux OS 9 enforces password complexity by requiring at least one uppercase character with the following command:\n\n$ grep -r ucredit /etc/security/pwquality.conf*\n\n/etc/security/pwquality.conf.d/stig.conf:ucredit = -1\n\nIf the value of \"ucredit\" is a positive number, is not set, is commented out, or if conflicting results are returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enforce password complexity by requiring at least one uppercase character be used by setting the \"ucredit\" option.\n\nAdd or update the following line in the \"/etc/security/pwquality.conf\" file or a configuration file in the \"/etc/security/pwquality.conf.d/\" directory:\n\nucredit = -1\n\nRemove any configurations that conflict with the above value.","ccis":["CCI-004066"]},{"vulnId":"V-269390","ruleId":"SV-269390r1155274_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enforce password complexity by requiring that at least one special character be used.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. \n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.","checkContent":"Verify AlmaLinux OS 9 enforces password complexity by requiring at least one special character with the following command:\n\n$ grep -r ocredit /etc/security/pwquality.conf*\n\n/etc/security/pwquality.conf.d/stig.conf:ocredit = -1\n\nIf the value of \"ocredit\" is a positive number, is not set, is commented out, or if conflicting results are returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enforce password complexity by requiring at least one special character be used by setting the \"ocredit\" option.\n\nAdd or update the following line in the \"/etc/security/pwquality.conf\" file or a configuration file in the \"/etc/security/pwquality.conf.d/\" directory:\n\nocredit = -1\n\nRemove any configurations that conflict with the above value.","ccis":["CCI-004066"]},{"vulnId":"V-269392","ruleId":"SV-269392r1050275_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 passwords must be created with a minimum of 15 characters.","description":"The shorter the password, the lower the number of possible combinations that need to be tested before the password is compromised.\n\nPassword complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password length is one factor of several that helps to determine strength and how long it takes to crack a password. Use of more characters in a password helps to exponentially increase the time and/or resources required to compromise the password.\n\nThe shorter the password, the lower the number of possible combinations that need to be tested before the password is compromised.\n\nPassword complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password length is one factor of several that helps to determine strength and how long it takes to crack a password. Use of more characters in a password helps to exponentially increase the time and/or resources required to compromise the password.\n\nAlmaLinux OS 9 uses the PAM pwquality module as a mechanism to enforce password complexity. Configurations are set in the \"/etc/security/pwquality.conf\" file or further *.conf files within the \"/etc/security/pwquality.conf.d/\" directory.\n\nThe \"minlen\" parameter acts as a score of complexity based on the credit components of the pwquality module. By setting the credit to a negative value, not only will those components be required, but they will not count toward the total score of minlen. This will result in minlen requiring a 15-character minimum.","checkContent":"Verify that AlmaLinux OS 9 enforces a minimum 15-character password length with the following command:\n\n$ grep -r minlen /etc/security/pwquality.conf*\n\n/etc/security/pwquality.conf.d/stig.conf:minlen = 15\n\nIf the value of \"minlen\" is less than 15, is not set, is commented out, or if conflicting results are returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to require a minimum 15-character password length by setting the \"minlen\" option.\n\nAdd or update the following line in the \"/etc/security/pwquality.conf\" file or a configuration file in the \"/etc/security/pwquality.conf.d/\" directory:\n\nminlen = 15\n\nRemove any configurations that conflict with the above value.","ccis":["CCI-004066"]},{"vulnId":"V-269393","ruleId":"SV-269393r1050276_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enforce password complexity by requiring that at least one numeric character be used.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. \n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.","checkContent":"Verify that AlmaLinux OS 9 enforces password complexity by requiring at least one numeric character with the following command:\n\n$ grep -r dcredit /etc/security/pwquality.conf*\n\n/etc/security/pwquality.conf.d/stig.conf:dcredit = -1\n\nIf the value of \"dcredit\" is a positive number, is not set, is commented out, or if conflicting results are returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enforce password complexity by requiring at least one numeric character be used by setting the \"dcredit\" option.\n\nAdd or update the following line in the \"/etc/security/pwquality.conf\" file or a configuration file in the \"/etc/security/pwquality.conf.d/\" directory:\n\ndcredit = -1\n\nRemove any configurations that conflict with the above value.","ccis":["CCI-004066"]},{"vulnId":"V-269394","ruleId":"SV-269394r1050277_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must require the change of at least four character classes when passwords are changed.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. \n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.","checkContent":"Verify the value of the \"minclass\" option in \"/etc/security/pwquality.conf\" with the following command:\n\n$  grep -ir minclass /etc/security/pwquality.conf*\n\n/etc/security/pwquality.conf:# minclass = 0\n/etc/security/pwquality.conf.d/stig.conf:minclass = 4\n\nIf the value of \"minclass\" is set to less than \"4\", or is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to require the change of at least four character classes when passwords are changed by setting the \"minclass\" option.\n\nAdd the following line to \"/etc/security/pwquality.conf\" (or modify the line to have the required value):\n\nminclass = 4","ccis":["CCI-004066"]},{"vulnId":"V-269395","ruleId":"SV-269395r1050278_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must require the maximum number of repeating characters be limited to three when passwords are changed.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. \n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.","checkContent":"Verify the value of the \"maxrepeat\" option in \"/etc/security/pwquality.conf\" with the following command:\n\n$ grep -ir maxrepeat /etc/security/pwquality.conf*\n\n/etc/security/pwquality.conf:# maxrepeat = 0\n/etc/security/pwquality.conf.d/stig.conf:maxrepeat = 3\n\nIf the value of \"maxrepeat\" is set to more than \"3\", or is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to require the change of the number of repeating consecutive characters when passwords are changed by setting the \"maxrepeat\" option.\n\nAdd the following line to \"/etc/security/pwquality.conf\" (or modify the line to have the required value):\n\nmaxrepeat = 3","ccis":["CCI-004066"]},{"vulnId":"V-269396","ruleId":"SV-269396r1050279_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must require the maximum number of repeating characters of the same character class be limited to four when passwords are changed.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. \n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.","checkContent":"Verify the value of the \"maxclassrepeat\" option in \"/etc/security/pwquality.conf\" with the following command:\n\n$ grep -ir maxclassrepeat /etc/security/pwquality.conf*\n\n/etc/security/pwquality.conf:# maxclassrepeat = 0\n/etc/security/pwquality.conf.d/stig.conf:maxclassrepeat = 4\n\nIf the value of \"maxclassrepeat\" is set to \"0\", more than \"4\", or is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to require the change of the number of repeating characters of the same character class when passwords are changed by setting the \"maxclassrepeat\" option.\n\nAdd the following line to \"/etc/security/pwquality.conf\" conf (or modify the line to have the required value):\n\nmaxclassrepeat = 4","ccis":["CCI-004066"]},{"vulnId":"V-269397","ruleId":"SV-269397r1050280_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must require the change of at least eight characters when passwords are changed.","description":"Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. \n\nPassword complexity is one factor of several that determines how long it takes to crack a password. The more complex the password, the greater the number of possible combinations that need to be tested before the password is compromised.","checkContent":"Verify that AlmaLinux OS 9 enforces password complexity by requiring at least eight characters differ when passwords are changed with the following command:\n\n$ grep -r difok /etc/security/pwquality.conf*\n\n/etc/security/pwquality.conf.d/stig.conf:difok = 8\n\nIf the value of \"difok\" is less than \"8\", is not set, is commented out, or if conflicting results are returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to require the change of at least eight of the total number of characters when passwords are changed by setting the \"difok\" option.\n\nAdd or update the following line in the \"/etc/security/pwquality.conf\" file or a configuration file in the \"/etc/security/pwquality.conf.d/\" directory:\n\ndifok = 8\n\nRemove any configurations that conflict with the above value.","ccis":["CCI-004066"]},{"vulnId":"V-269398","ruleId":"SV-269398r1050281_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 PAM must be configured to use a sufficient number of password hashing rounds.","description":"Passwords must be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised.\n\nUsing more hashing rounds makes password cracking attacks more difficult.","checkContent":"Verify the number of rounds for the password hashing algorithm is configured with the following command:\n\n$ grep rounds /etc/pam.d/password-auth /etc/pam.d/system-auth \n\n/etc/pam.d/password-auth:password    sufficient       pam_unix.so sha512 shadow rounds=100000  use_authtok\n/etc/pam.d/system-auth:password    sufficient       pam_unix.so sha512 shadow rounds=100000  use_authtok\n\nIf a matching line is not returned in both files, or \"rounds\" is less than \"100000\", this a finding.\n\nAdd/modify the appropriate sections of the \"/etc/pam.d/password-auth\" file to match the following lines, ensuring that the \"preauth\" line is listed before pam_unix.so","fixText":"Configure AlmaLinux OS 9 to use at least 100000 hashing rounds for hashing passwords.\n\nAdd or modify the following line in \"/etc/pam.d/password-auth\" and \"/etc/pam.d/system-auth\" and set \"rounds\" to \"100000\" or higher:\n\npassword sufficient pam_unix.so sha512 rounds=100000","ccis":["CCI-004062"]},{"vulnId":"V-269399","ruleId":"SV-269399r1050282_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must be configured so that libuser is configured to store only encrypted representations of passwords.","description":"Passwords must be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised.\n\nThe system must use a strong hashing algorithm to store the password.","checkContent":"Verify the user and group account administration utilities are configured to store only encrypted representations of passwords with the following command:\n\n$ grep crypt_style /etc/libuser.conf \n\ncrypt_style = sha512\n\nIf the \"crypt_style\" variable is not set to \"sha512\", is not in the defaults section, is commented out, or does not exist, this is a finding.","fixText":"Configure AlmaLinux OS 9 to use the SHA-512 algorithm for password hashing.\n\nAdd or change the following line in the \"[defaults]\" section of the \"/etc/libuser.conf\" file:\n\ncrypt_style = sha512","ccis":["CCI-004062"]},{"vulnId":"V-269400","ruleId":"SV-269400r1050283_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must be configured so that the system's shadow file is configured to store only encrypted representations of passwords.","description":"Passwords must be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised.\n\nThe system must use a strong hashing algorithm to store the password.","checkContent":"Verify the system's shadow file is configured to store only encrypted representations of passwords with a hash value of SHA512 with the following command:\n\n$ grep ENCRYPT_METHOD /etc/login.defs\n\nENCRYPT_METHOD SHA512\n\nIf \"ENCRYPT_METHOD\" does not have a value of \"SHA512\", or the line is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to use the SHA-512 algorithm for password hashing.\n\nAdd or update the following line in the \"/etc/login.defs\" file:\n\nENCRYPT_METHOD SHA512","ccis":["CCI-004062"]},{"vulnId":"V-269401","ruleId":"SV-269401r1050284_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must be configured so that the Pluggable Authentication Module is configured to store only encrypted representations of passwords.","description":"Passwords must be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised.\n\nThe system must use a strong hashing algorithm to store the password.","checkContent":"Verify that the pam_unix.so module is configured to use sha512 in /etc/pam.d/password-auth with the following command:\n\n$ grep -E \"password.*pam_unix.so.*sha512\" /etc/pam.d/password-auth\n\npassword    sufficient      pam_unix.so sha512 shadow rounds=100000  use_authtok\n\nIf \"sha512\" is missing, or the line is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to use the SHA-512 algorithm for password hashing.\n\nEdit/modify the following line in the \"/etc/pam.d/password-auth\" file to include the sha512 option for pam_unix.so:\n\npassword    sufficient      pam_unix.so sha512 shadow rounds=100000  use_authtok","ccis":["CCI-004062"]},{"vulnId":"V-269402","ruleId":"SV-269402r1050285_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must be configured so that interactive user account passwords are using strong password hashes.","description":"Passwords must be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised.\n\nThe system must use a strong hashing algorithm to store the password.","checkContent":"Verify that the interactive user account passwords are using a strong password hash with the following command:\n\n$ cut -d: -f1,2 /etc/shadow\n\nroot:$6$88upzIIyml/6UEya$QMLbF.L6gMNnIhzcxRorHgubK6jl3CHZ.MZrMkrEApOlt/MP.N.BFea.ykhPnIS.EYICo6To42koq0DCH8AjB/\nbin:*\ndaemon:*\n\nPassword hashes \"!\" or \"*\" indicate inactive accounts not available for logon and are not evaluated.\n\nIf any interactive user password hash does not begin with \"$6\", this is a finding.","fixText":"Lock all interactive user accounts not using SHA-512 hashing until the passwords can be regenerated with SHA-512.","ccis":["CCI-004062"]},{"vulnId":"V-269403","ruleId":"SV-269403r1050286_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must not have any File Transfer Protocol (FTP) packages installed.","description":"Passwords must be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised.\n\nAn FTP server provides an unencrypted file transfer mechanism that does not protect the confidentiality of user credentials or the remote session.\n\nIf a privileged user were to log on using this service, the privileged user password could be compromised. SFTP or other encrypted file transfer methods must be used instead.\n\nRemoving the server and client packages prevents inbound and outbound communications from being compromised.","checkContent":"Verify that AlmaLinux OS 9 does not have an FTP client or server package installed with the following command:\n\n$ rpm -qa | grep ftp\n\nIf the \"vsftpd\" server or \"ftp\" client packages are installed, this is a finding.\n\nNote that there may be third-party or alternative packages that provide the same functionality, which should also be removed.","fixText":"Remove the default FTP client and server packages using the following command:\n\n$ dnf remove vsftpd ftp","ccis":["CCI-000197"]},{"vulnId":"V-269404","ruleId":"SV-269404r1050287_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must not have any telnet packages installed.","description":"Passwords must be protected at all times, and encryption is the standard method for protecting passwords. If passwords are not encrypted, they can be plainly read (i.e., clear text) and easily compromised.\n\nA telnet server provides an unencrypted remote access mechanism that does not protect the confidentiality of user credentials or the remote session.\n\nIf a privileged user were to log on using this service, the privileged user password could be compromised. SSH or other encrypted session methods must be used instead.\n\nRemoving the server and client packages prevents inbound and outbound communications from being compromised.","checkContent":"Verify that AlmaLinux OS 9 does not have a telnet client or server package installed with the following command:\n\n$ rpm -qa | grep telnet\n\nIf the \"telnet-server\" server or \"telnet\" client packages are installed, this is a finding.\n\nNote that there may be third-party or alternative packages that provide the same functionality, which should also be removed.","fixText":"Remove the default telnet client and server packages using the following command:\n\n$ dnf remove telnet-server telnet","ccis":["CCI-000197"]},{"vulnId":"V-269405","ruleId":"SV-269405r1050288_rule","severity":"medium","ruleTitle":"Passwords for existing users must have a 60-day maximum password lifetime restriction in /etc/shadow.","description":"Any password, no matter how complex, can eventually be cracked. Therefore, Passwords must be changed periodically. If the operating system does not limit the lifetime of passwords and force users to change their passwords, there is the risk that the operating system passwords could be compromised.","checkContent":"Check whether the maximum time period for existing passwords is restricted to 60 days with the following command:\n\n$ awk -F: '$5 <= 0 || $5 > 60 {print $1 \" \" $5}' /etc/shadow\n\nIf any results are returned that are not associated with a system account, this is a finding.","fixText":"Configure noncompliant accounts to enforce a 60-day maximum password lifetime restriction using the following command, substituting in the username:\n\n$ chage -M 60 [user]","ccis":["CCI-000199"]},{"vulnId":"V-269406","ruleId":"SV-269406r1050619_rule","severity":"medium","ruleTitle":"Passwords for new users or password changes must have a 60-day maximum password lifetime restriction in /etc/login.defs.","description":"Any password, no matter how complex, can eventually be cracked. Therefore, passwords must be changed periodically. If the operating system does not limit the lifetime of passwords and force users to change their passwords, there is the risk that the operating system passwords could be compromised.","checkContent":"Verify that AlmaLinux OS 9 enforces a 60-day maximum password lifetime for new user accounts by running the following command:\n\n$ grep PASS_MAX_DAYS /etc/login.defs\n\nPASS_MAX_DAYS 60\n\nIf the \"PASS_MAX_DAYS\" parameter value is greater than \"60\", is not set, or is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enforce a 60-day maximum password lifetime.\n\nModify the \"/etc/login.defs\" file to set the \"PASS_MAX_DAYS\" parameter to 60 or greater:\n\nPASS_MAX_DAYS 60","ccis":["CCI-000199"]},{"vulnId":"V-269407","ruleId":"SV-269407r1050290_rule","severity":"medium","ruleTitle":"Passwords for existing users must have a 24-hour minimum password lifetime restriction in /etc/shadow.","description":"Enforcing a minimum password lifetime helps to prevent repeated password changes to defeat the password reuse or history enforcement requirement. If users are allowed to immediately and continually change their password, then the password could be repeatedly changed in a short period of time to defeat the organization's policy regarding password reuse.\n\nChecking existing users have this setting will ensure that no users created before the policy was configured can evade the password minimum setting.","checkContent":"Verify the minimum time period between password changes for all user accounts is a day or more by running the following command:\n \n$ awk -F: '$4 < 1 {print $1 \" \" $4}' /etc/shadow \n \nIf any results are returned that are not associated with a system account, this is a finding.","fixText":"Configure noncompliant accounts to enforce a 24 hours/one day minimum password lifetime using the following command, substituting in the username:\n \n$ chage -m 1 [user]","ccis":["CCI-000198"]},{"vulnId":"V-269408","ruleId":"SV-269408r1050291_rule","severity":"medium","ruleTitle":"Passwords for new users or password changes must have a 24-hour minimum password lifetime restriction in /etc/login.defs.","description":"Enforcing a minimum password lifetime helps to prevent repeated password changes to defeat the password reuse or history enforcement requirement. If users are allowed to immediately and continually change their password, then the password could be repeatedly changed in a short period of time to defeat the organization's policy regarding password reuse.","checkContent":"Verify AlmaLinux OS 9 enforces 24 hours as the minimum password lifetime for new user accounts with the following command:\n\n$ grep PASS_MIN_DAYS /etc/login.defs\n\nPASS_MIN_DAYS 1\n\nIf the value of \"PASS_MIN_DAYS\" is less than \"1\", is not set, or is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enforce 24 hours as the minimum password lifetime.\n\nModify the \"/etc/login.defs\" file to set the \"PASS_MIN_DAYS\" parameter to 1 or greater:\n\nPASS_MIN_DAYS 1","ccis":["CCI-000198"]},{"vulnId":"V-269409","ruleId":"SV-269409r1050292_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prohibit the use of cached authenticators after one day.","description":"Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. If the information system or application allows the user to consecutively reuse their password when that password has exceeded its defined lifetime, the end result is a password that is not changed as per policy requirements.\n\nIf cached authentication information is out-of-date, the validity of the authentication information may be questionable.","checkContent":"Note: If smart card authentication is not being used on the system, this requirement is Not Applicable.\n\nVerify that the System Security Services Daemon (SSSD) prohibits the use of cached authentications after one day.\n\nCheck that SSSD allows cached authentications with the following command:\n\n$  grep cache_credentials /etc/sssd/sssd.conf /etc/sssd/conf.d/*\n\n/etc/sssd/conf.d/certificate_verification.conf:cache_credentials = true\n\nIf \"cache_credentials\" is set to \"false\" or missing from the configuration, this is not a finding and no further checks are required.\n\nIf \"cache_credentials\" is set to \"true\", check that SSSD prohibits the use of cached authentications after one day with the following command:\n\n$ grep offline_credentials_expiration /etc/sssd/sssd.conf /etc/sssd/conf.d/\n\n/etc/sssd/conf.d/certificate_verification.conf:offline_credentials_expiration = 1\n\nIf \"offline_credentials_expiration\" is not set to a value of \"1\", this is a finding.","fixText":"Configure the SSSD to prohibit the use of cached authentications after one day.\n\nAdd/modify the following line in \"/etc/sssd/sssd.conf\" (or a conf file in /etc/sssd/conf.d/) just below the line [pam]:\n\noffline_credentials_expiration = 1","ccis":["CCI-002007"]},{"vulnId":"V-269410","ruleId":"SV-269410r1050293_rule","severity":"medium","ruleTitle":"For PKI-based authentication, AlmaLinux OS 9 must enforce authorized access to the corresponding private key.","description":"If the private key is discovered, an attacker can use the key to authenticate as an authorized user and gain access to the network infrastructure.\n\nThe cornerstone of the PKI is the private key used to encrypt or digitally sign information.\n\nIf the private key is stolen, this will lead to the compromise of the authentication and nonrepudiation gained through PKI because the attacker can use the private key to digitally sign documents and pretend to be the authorized user.\n\nBoth the holders of a digital certificate and the issuing authority must protect the computers, storage devices, or whatever they use to keep the private keys.","checkContent":"Verify the SSH private key files have a passcode.\n\nFor each private key stored on the system, use the following command:\n\n$ ssh-keygen -y -f /path/to/file\n\nIf the contents of the key are displayed, instead of a passphrase prompt, this is a finding.","fixText":"Create a new private and public key pair that uses a passcode, as the correct user, with the following command:\n\n$ ssh-keygen -n [passphrase]","ccis":["CCI-000186"]},{"vulnId":"V-269411","ruleId":"SV-269411r1050294_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must map the authenticated identity to the user or group account for PKI-based authentication.","description":"Without mapping the certificate used to authenticate to the user account, the ability to determine the identity of the individual user or group will not be available for forensic analysis.","checkContent":"Note: If the system administrator (SA) demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable.\n\nVerify the operating system implements Online Certificate Status Protocol (OCSP) and is using the proper digest value on the system with the following command:\n\n$ grep certmap /etc/sssd/sssd.conf /etc/sssd/conf.d/*.conf \n\n/etc/sssd/conf.d/mapping.conf:[certmap/testing.test/rule_name]\n\nIf the certmap section does not exist, ask the system administrator (SA) to indicate how certificates are mapped to accounts. If there is no evidence of certificate mapping, this is a finding.","fixText":"Configure AlmaLinux OS 9 to map the authenticated identity to the user or group account by adding or modifying the certmap section of the \"/etc/sssd/sssd.conf\" file or a \"*.conf\" file within the \"/etc/sssd/conf.d/\" directory, based on the following example:\n\n[certmap/testing.test/rule_name]\nmatchrule = .*EDIPI@mil\nmaprule = (userCertificate;binary={cert!bin})\ndomains = testing.test\n\nThe \"sssd\" service must be restarted for the changes to take effect. To restart the \"sssd\" service, run the following command:\n\n$ systemctl restart sssd.service","ccis":["CCI-000187"]},{"vulnId":"V-269412","ruleId":"SV-269412r1155277_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9, for PKI-based authentication, must validate certificates by constructing a certification path (which includes status information) to an accepted trust anchor.","description":"Without path validation, an informed trust decision by the relying party cannot be made when presented with any certificate not already explicitly trusted.\n\nA trust anchor is an authoritative entity represented via a public key and associated data. It is used in the context of public key infrastructures, X.509 digital certificates, and DNSSEC.\n\nWhen there is a chain of trust, usually the top entity to be trusted becomes the trust anchor; it can be, for example, a Certification Authority (CA). A certification path starts with the subject certificate and proceeds through a number of intermediate certificates up to a trusted root certificate, typically issued by a trusted CA.\n\nThis requirement verifies that a certification path to an accepted trust anchor is used for certificate validation and that the path includes status information. Path validation is necessary for a relying party to make an informed trust decision when presented with any certificate not already explicitly trusted. Status information for certification paths includes certificate revocation lists or online certificate status protocol responses. Validation of the certificate status information is out of scope for this requirement.\n\nSatisfies: SRG-OS-000384-GPOS-00167, SRG-OS-000066-GPOS-00034, SRG-OS-000775-GPOS-00230, SRG-OS-000780-GPOS-00240","checkContent":"Verify AlmaLinux OS 9 for PKI-based authentication has valid certificates by constructing a certification path (which includes status information) to an accepted trust anchor.\n\nIf \"pam_cert_db_path\" is set in \"/etc/sssd/sssd.conf\" or a \"*.conf\" file within the \"/etc/sssd/conf.d/\" directory, substitute that path for the default /etc/sssd/pki/sssd_auth_ca_db.pem used below.\n\nCheck that the system has a valid DOD root CA installed with the following command:\n\n$ openssl x509 -text -in /etc/sssd/pki/sssd_auth_ca_db.pem\n\nCertificate:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 1 (0x1)\n        Signature Algorithm: sha256WithRSAEncryption\n        Issuer: C = US, O = U.S. Government, OU = DOD, OU = PKI, CN = DOD Root CA 3\n        Validity\n        Not Before: Mar 20 18:46:41 2012 GMT\n        Not After: Dec 30 18:46:41 2029 GMT\n        Subject: C = US, O = U.S. Government, OU = DOD, OU = PKI, CN = DOD Root CA 3\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n\nIf the root CA file is not a DOD-issued certificate with a valid date and installed in \"/etc/sssd/pki/sssd_auth_ca_db.pem\" (or pam_cert_db_path location) this is a finding.","fixText":"Configure AlmaLinux OS 9, for PKI-based authentication, to validate certificates by constructing a certification path (which includes status information) to an accepted trust anchor.\n\nObtain a valid copy of the DOD root CA file from the PKI CA certificate bundle from cyber.mil and copy the DOD_PKE_CA_chain.pem into the /etc/sssd/pki/sssd_auth_ca_db.pem file (or pam_cert_db_path).","ccis":["CCI-004068","CCI-000185","CCI-004909","CCI-004910"]},{"vulnId":"V-269415","ruleId":"SV-269415r1101853_rule","severity":"medium","ruleTitle":"The libreswan package must be installed.","description":"Providing the ability for remote users or systems to initiate a secure VPN connection protects information when it is transmitted over a wide area network.","checkContent":"Note: If there is no operational need for Libreswan to be installed, this rule is not applicable.\n\nVerify that the libreswan package is installed with the following command:\n\n$ dnf list --installed libreswan\n\nlibreswan.x86_64         4.9-4.el9_2      @appstream\n\nIf the \"libreswan\" package is not installed, this is a finding.","fixText":"Install the libreswan package with the following command:\n\n$ dnf install libreswan","ccis":["CCI-000803"]},{"vulnId":"V-269416","ruleId":"SV-269416r1050299_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the packages required for encrypting offloaded audit logs installed.","description":"The rsyslog-gnutls package provides Transport Layer Security (TLS) support for the rsyslog daemon, which enables secure remote logging.","checkContent":"Verify that the rsyslog-gnutls package is installed with the following command:\n\n$ dnf list --installed rsyslog-gnutls\n\nrsyslog-gnutls.x86_64         8.2102.0-111.el9         @AppStream\n\nIf the \"rsyslog-gnutls\" package is not installed, this is a finding.","fixText":"Install the rsyslog-gnutls package with the following command:\n\n$ dnf install rsyslog-gnutls","ccis":["CCI-000803"]},{"vulnId":"V-269419","ruleId":"SV-269419r1050302_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must be configured so that all network connections associated with SSH traffic are terminated after 10 minutes of becoming unresponsive.","description":"Terminating an unresponsive SSH session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle SSH session will also free up resources committed by the managed network element.\n\nTerminating network connections associated with communications sessions includes, for example, deallocating associated TCP/IP address/port pairs at the operating system level and deallocating networking assignments at the application level if multiple application sessions are using a single operating system-level network connection. This does not mean the operating system terminates all sessions or network access; it only ends the unresponsive session and releases the resources associated with that session.\n\nSatisfies: SRG-OS-000395-GPOS-00175, SRG-OS-000163-GPOS-00072, SRG-OS-000279-GPOS-00109","checkContent":"Verify that the \"ClientAliveInterval\" variable is set to a value of \"600\" or less and \"ClientAliveCountMax\" is set to \"1\" by performing the following command:\n\n$ sshd -T | grep clientalive\n\nclientaliveinterval 600\nclientalivecountmax 1\n\nIf \"ClientAliveInterval\" does not have a value of \"600\" or less, or \"ClientAliveCountMax\" is not set to \"1\", this is a finding.","fixText":"To configure the SSH server to terminate a user session automatically after the SSH client has become unresponsive, add or modify the following lines in \"/etc/ssh/sshd_config\":\n\nClientAliveInterval 600\nClientAliveCountMax 1\n\nAlternatively, add the settings to an include file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\n$ cat << EOF | tee /etc/ssh/sshd_config.d/clientalive.conf\nClientAliveInterval 600\nClientAliveCountMax 1\nEOF\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-002891","CCI-001133","CCI-002361"]},{"vulnId":"V-269420","ruleId":"SV-269420r1050303_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must enable the Pluggable Authentication Module (PAM) interface for SSHD.","description":"When UsePAM is set to \"yes\", PAM runs through account and session types properly. This is important when restricted access to services based off of IP, time, or other factors of the account is needed.\n\nAdditionally, this ensures users can inherit certain environment variables on login or disallow access to the server.","checkContent":"Verify the AlmaLinux OS 9 SSHD is configured to allow for the UsePAM interface with the following command:\n\n$ sshd -T | grep usepam\n\nusepam yes\n\nIf the \"UsePAM\" keyword is set to \"no\", is missing, or is commented out, this is a finding.","fixText":"Configure the SSH daemon to use PAM.\n\nAdd the following line to \"/etc/ssh/sshd_config\", or uncomment the line and set the value to \"yes\":\n\nUsePAM yes\n\nAlternatively, add the setting to an include file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\n$ cat << EOF | tee /etc/ssh/sshd_config.d/pam.conf\nUsePAM yes\nEOF\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-000877"]},{"vulnId":"V-269421","ruleId":"SV-269421r1155259_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must terminate idle user sessions.","description":"Terminating an idle session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle session will also free up resources committed by the managed network element.\n\nTerminating network connections associated with communications sessions includes, for example, de-allocating associated TCP/IP address/port pairs at the operating system level, and de-allocating networking assignments at the application level if multiple application sessions are using a single operating system-level network connection. This does not mean that the operating system terminates all sessions or network access; it only ends the inactive session and releases the resources associated with that session.","checkContent":"Verify that AlmaLinux OS 9 logs out sessions that are idle for 10 minutes with the following command:\n\n$ systemd-analyze cat-config systemd/logind.conf | grep StopIdleSessionSec\n\n#StopIdleSessionSec=infinity\nStopIdleSessionSec=600\n\nIf \"StopIdleSessionSec\" is not configured to \"600\" seconds, this is a finding.","fixText":"Configure AlmaLinux OS 9 to log out idle sessions.\n\nCreate the directory if necessary:\n\n$ mkdir -p /etc/systemd/logind.conf.d/\n\nCreate a *.conf file in /etc/systemd/logind.conf.d/ with the following content:\n\n[Login]\nStopIdleSessionSec=600\nKillUserProcesses=no\n\nRestart systemd-logind:\n\n$ systemctl restart systemd-logind","ccis":["CCI-001133"]},{"vulnId":"V-269422","ruleId":"SV-269422r1117266_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must disable access to network bpf system call from nonprivileged processes.","description":"Loading and accessing the packet filters programs and maps using the bpf() system call has the potential of revealing sensitive information about the kernel state.","checkContent":"Verify AlmaLinux OS 9 prevents privilege escalation thru the kernel by disabling access to the bpf system call with the following commands:\n\n$ sysctl kernel.unprivileged_bpf_disabled\n\nkernel.unprivileged_bpf_disabled = 1\n\nIf the returned line does not have a value of \"1\", or a line is not returned, this is a finding.\n\nCheck that the configuration files are present to enable this kernel parameter.\n\n$ /usr/lib/systemd/systemd-sysctl --cat-config | egrep -v '^(#|;)' | grep -F kernel.unprivileged_bpf_disabled | tail -1\n\nkernel.unprivileged_bpf_disabled = 1\n\nIf \"kernel.unprivileged_bpf_disabled\" is not set to \"1\", or nothing is returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to prevent privilege escalation through the kernel by disabling access to the bpf syscall with the following command:\n\n$ echo \"kernel.unprivileged_bpf_disabled = 1\" > /etc/sysctl.d/60-bpf.conf\n\nLoad settings from all system configuration files with the following command:\n\n$ sysctl --system","ccis":["CCI-001082"]},{"vulnId":"V-269423","ruleId":"SV-269423r1117266_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must restrict exposed kernel pointer addresses access.","description":"Exposing kernel pointers (through procfs or \"seq_printf()\") exposes kernel writeable structures, which may contain functions pointers. If a write vulnerability occurs in the kernel, allowing write access to any of this structure, the kernel can be compromised. \n\nThis option disallows any program without the CAP_SYSLOG capability to get the addresses of kernel pointers by replacing them with \"0\".","checkContent":"Verify the runtime status of the kernel.kptr_restrict kernel parameter with the following command:\n\n$ sysctl kernel.kptr_restrict \n\nkernel.kptr_restrict = 1\n\nVerify the configuration of the kernel.kptr_restrict kernel parameter with the following command:\n\n$ /usr/lib/systemd/systemd-sysctl --cat-config | egrep -v '^(#|;)' |  grep -F kernel.kptr_restrict | tail -1\n\nkernel.kptr_restrict =1\n\nIf \"kernel.kptr_restrict\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to restrict exposed kernel pointer addresses access with the following command:\n\n$ echo \"kernel.kptr_restrict = 1\" > /etc/sysctl.d/60-kptr.conf\n\nLoad settings from all system configuration files with the following command:\n\n$ sysctl --system","ccis":["CCI-001082"]},{"vulnId":"V-269424","ruleId":"SV-269424r1117266_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must restrict usage of ptrace to descendant processes.","description":"Unrestricted usage of ptrace allows compromised binaries to run ptrace on other processes of the user. Like this, the attacker can steal sensitive information from the target processes (e.g. SSH sessions, web browser etc.) without any additional assistance from the user (i.e. without resorting to phishing).","checkContent":"Verify AlmaLinux OS 9 restricts usage of ptrace to descendant processes (1), admins only (2), or disables ptrace entirely (3) with the following command:\n\n$ sysctl kernel.yama.ptrace_scope\n\nkernel.yama.ptrace_scope = 1\n\nIf the returned line has a value of \"0\" or a line is not returned, this is a finding.\n\nCheck that the configuration files are present to enable this kernel parameter.\n\n$ /usr/lib/systemd/systemd-sysctl --cat-config | egrep -v '^(#|;)' | grep -F kernel.yama.ptrace_scope | tail -1\n\nkernel.yama.ptrace_scope = 1\n\nIf \"kernel.yama.ptrace_scope\" is equal to \"0\" or nothing is returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to restrict usage of ptrace to with the following command:\n\n$ echo \"kernel.yama.ptrace_scope = 1\" > /etc/sysctl.d/60-ptrace.conf\n\nLoad settings from all system configuration files with the following command:\n\n$ sysctl --system","ccis":["CCI-001082"]},{"vulnId":"V-269425","ruleId":"SV-269425r1117266_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must restrict access to the kernel message buffer.","description":"Restricting access to the kernel message buffer limits access to only root. This prevents attackers from gaining additional system information as a nonprivileged user.\n\nSatisfies: SRG-OS-000132-GPOS-00067, SRG-OS-000138-GPOS-00069","checkContent":"Verify AlmaLinux OS 9 is configured to restrict access to the kernel message buffer with the following commands:\n\nCheck the status of the kernel.dmesg_restrict kernel parameter.\n\n$ sysctl kernel.dmesg_restrict\n\nkernel.dmesg_restrict = 1\n\nIf \"kernel.dmesg_restrict\" is not set to \"1\" or is missing, this is a finding.\n\nCheck that the configuration files are present to enable this kernel parameter.\n\n$ /usr/lib/systemd/systemd-sysctl --cat-config | egrep -v '^(#|;)' | grep -F kernel.dmesg_restrict | tail -1\n\nkernel.dmesg_restrict = 1\n\nIf \"kernel.dmesg_restrict\" is not set to \"1\" or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to restrict access to the kernel message buffer with the following command:\n\n$ echo \"kernel.dmesg_restrict = 1 > /etc/sysctl.d/60-dmesg.conf\"\n\nLoad settings from all system configuration files with the following command:\n\n$ sysctl --system","ccis":["CCI-001082","CCI-001090"]},{"vulnId":"V-269426","ruleId":"SV-269426r1117266_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must prevent kernel profiling by nonprivileged users.","description":"Setting the kernel.perf_event_paranoid kernel parameter to \"2\" prevents attackers from gaining additional system information as a nonprivileged user.\n\nSatisfies: SRG-OS-000132-GPOS-00067, SRG-OS-000138-GPOS-00069","checkContent":"Verify AlmaLinux OS 9 is configured to prevent kernel profiling by nonprivileged users with the following commands:\n\nCheck the status of the kernel.perf_event_paranoid kernel parameter.\n\n$ sysctl kernel.perf_event_paranoid\n\nkernel.perf_event_paranoid = 2\n\nIf \"kernel.perf_event_paranoid\" is not set to \"2\" or is missing, this is a finding.\n\nCheck that the configuration files are present to enable this kernel parameter.\n\n$ /usr/lib/systemd/systemd-sysctl --cat-config  | egrep -v '^(#|;)' | grep -F kernel.perf_event_paranoid | tail -1\n\nkernel.perf_event_paranoid = 2\n\nIf \"kernel.perf_event_paranoid\" is not set to \"2\" or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to prevent kernel profiling by nonprivileged users with the following command:\n\n$ echo \"kernel.perf_event_paranoid = 2\" > /etc/sysctl.d/60-perf.conf\n\nLoad settings from all system configuration files with the following command:\n\n$ sysctl --system","ccis":["CCI-001082","CCI-001090"]},{"vulnId":"V-269427","ruleId":"SV-269427r1050310_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must only allow the use of DOD PKI-established certificate authorities for authentication in the establishment of protected sessions to the operating system.","description":"Untrusted Certificate Authorities (CA) can issue certificates, but they may be issued by organizations or individuals that seek to compromise DOD systems or by organizations with insufficient security controls. If the CA used for verifying the certificate is not a DOD-approved CA, trust of this CA has not been established.\n\nThe DOD will only accept PKI-certificates obtained from a DOD-approved internal or external certificate authority. Reliance on CAs for the establishment of secure sessions includes, for example, the use of SSL/TLS certificates.","checkContent":"Verify AlmaLinux OS 9 only allows the use of DOD PKI-established certificate authorities using the following command:\n\n$ trust list\n\npkcs11:id=%7C%42%96%AE%DE%4B%48%3B%FA%92%F8%9E%8C%CF%6D%8B%A9%72%37%95;type=cert\n    type: certificate\n    label: ISRG Root X2\n    trust: anchor\n    category: authority\n\nIf any nonapproved CAs are returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to only allow the use of DOD PKI-established certificate authorities.\n\nFor each untrusted CA, export the certificate to a file and add it to the blocklist:\n\n$ trust dump --filter \"pkcs11:id=%7C%42%96%AE%DE%4B%48%3B%FA%92%F8%9E%8C%CF%6D%8B%A9%72%37%95;type=cert\" > /etc/pki/ca-trust/source/blocklist/ISRGRootX2\n\n$ update-ca-trust \n\nVerify that the certificate is in the blocklist:\n\n$ trust list --filter=blocklist\np11-kit: overriding trust for anchor in blocklist: ISRGRootX2\npkcs11:id=%7C%42%96%AE%DE%4B%48%3B%FA%92%F8%9E%8C%CF%6D%8B%A9%72%37%95;type=cert\n    type: certificate\n    label: ISRG Root X2\n    trust: distrusted\n    category: authority\n\npkcs11:id=%88%68%BF%E0%8E%35%C4%3B%38%6B%62%F7%28%3B%84%81%C8%0C%D7%4D;type=cert\n    type: certificate\n    label: Explicitly Distrust DigiNotar Root CA\n    trust: distrusted\n    category: authority","ccis":["CCI-002470"]},{"vulnId":"V-269428","ruleId":"SV-269428r1050311_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 systemd-journald service must be enabled.","description":"In the event of a system failure, AlmaLinux OS 9 must preserve any information necessary to determine cause of failure and any information necessary to return to operations with least disruption to system processes.","checkContent":"Verify that \"systemd-journald\" is active with the following command:\n\n$ systemctl status systemd-journald\n systemd-journald.service - Journal Service\n     Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static)\n     Active: active (running) since Tue 2024-02-20 11:02:20 UTC; 14min ago\n\nIf the systemd-journald service is not active, this is a finding.","fixText":"To enable the systemd-journald service, run the following command:\n\n$ systemctl enable --now systemd-journald","ccis":["CCI-001665"]},{"vulnId":"V-269429","ruleId":"SV-269429r1050312_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 local disk partitions must implement cryptographic mechanisms to prevent unauthorized disclosure or modification of all information that requires at rest protection.","description":"AlmaLinux OS 9 systems handling data requiring \"data at rest\" protections must employ cryptographic mechanisms to prevent unauthorized disclosure and modification of the information at rest.\n\nSelection of a cryptographic mechanism is based on the need to protect the integrity of organizational information. The strength of the mechanism is commensurate with the security category and/or classification of the information. Organizations have the flexibility to either encrypt all information on storage devices (i.e., full disk encryption) or encrypt specific data structures (e.g., files, records, or fields).\n\nSatisfies: SRG-OS-000405-GPOS-00184, SRG-OS-000404-GPOS-00183, SRG-OS-000185-GPOS-00079","checkContent":"Note: If there is a documented and approved reason for not having data-at-rest encryption at the operating system level, such as encryption provided by a hypervisor or a disk storage array in a virtualized environment, this requirement is Not Applicable.\n\nVerify AlmaLinux OS 9 prevents unauthorized disclosure or modification of all information requiring at-rest protection by using disk encryption. \n\nVerify all system partitions are encrypted with the following command:\n\n$ lsblk -e11 -oNAME,FSTYPE,FSVER,MOUNTPOINTS\n\nNAME                                            FSTYPE      FSVER    MOUNTPOINTS\nsda                                                                  \n+-sda1                                          vfat        FAT16    /boot/efi\n+-sda2                                          xfs                  /boot\n+-sda3                                          LVM2_member LVM2 001 \n  +-rootvg-root                                 crypto_LUKS 2        \n  ¦ +-luks-8a7154ec-8eeb-46c8-9d75-66fc4b81d665 xfs                  /\n  +-rootvg-swap                                 crypto_LUKS 2        \n  ¦ +-luks-89bf0df8-547f-4613-af07-215e5f63e9a9 swap        1        [SWAP]\n  +-rootvg-home                                 crypto_LUKS 2        \n  ¦ +-luks-10a20c46-483d-4d12-831f-5328eda28fd1 xfs                  /home\n  +-rootvg-varlogaudit                          crypto_LUKS 2        \n  ¦ +-luks-29b74747-2f82-4472-82f5-0b5eb764effc xfs                  /var/log/audit\n  +-rootvg-varlog                               crypto_LUKS 2        \n  ¦ +-luks-e0d162f5-fad8-463e-8e39-6bd09e682961 xfs                  /var/log\n  +-rootvg-vartmp                               crypto_LUKS 2        \n  ¦ +-luks-0e7206e7-bfb1-4a23-ae14-b9cea7cf46d5 xfs                  /var/tmp\n  +-rootvg-var                                  crypto_LUKS 2        \n    +-luks-b23d8276-7844-4e79-8a58-505150b4eb42 xfs                  /var\n\nEvery persistent disk partition present must be of type \"crypto_LUKS\". If any partitions other than the /boot partitions are not type \"crypto_LUKS\", ask the administrator to indicate how the partitions are encrypted. If there is no evidence that these partitions are encrypted, this is a finding.","fixText":"Configure AlmaLinux OS 9 to prevent unauthorized modification of all information at rest by using disk encryption.\n\nEncrypting a partition in an already installed system is more difficult, because existing partitions will need to be resized and changed.\n\nTo encrypt an entire partition, dedicate a partition for encryption in the partition layout.","ccis":["CCI-002476","CCI-002475","CCI-001199"]},{"vulnId":"V-269430","ruleId":"SV-269430r1050313_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must use a Linux Security Module configured to enforce limits on system services.","description":"An isolation boundary provides access control and protects the integrity of the hardware, software, and firmware that perform security functions.\n\nSecurity functions are the hardware, software, and/or firmware of the information system responsible for enforcing the system security policy and supporting the isolation of code and data on which the protection is based. Operating systems implement code separation (i.e., separation of security functions from nonsecurity functions) in a number of ways, including through the provision of security kernels via processor rings or processor modes. For nonkernel code, security function isolation is often achieved through file system protections that serve to protect the code on disk and address space protections that protect executing code.\n\nDevelopers and implementers can increase the assurance in security functions by employing well-defined security policy models; structured, disciplined, and rigorous hardware and software development techniques; and sound system/security engineering principles. Implementation may include isolation of memory space and libraries. Operating systems restrict access to security functions through the use of access control mechanisms and by implementing least privilege capabilities.","checkContent":"Ensure that AlmaLinux OS 9 verifies correct operation of security functions through the use of SELinux with the following command:\n\n$ getenforce\n\nEnforcing\n\nIf SELINUX is not set to \"Enforcing\", this is a finding.\n\nVerify that SELinux is configured to be enforcing at boot.\n\n$ grep -E \"^SELINUX=\" /etc/selinux/config\n\nSELINUX=enforcing\n\nIf SELINUX line is missing, commented out, or not set to \"enforcing\", this is a finding.\n\nVerify that SELinux is enabled and Enforcing for all kernels:\n\n$ grubby --info=ALL | grep -E 'selinux|enforcing'\n\nargs=\"ro audit=1 selinux=1 enforcing=1 audit_backlog_limit=8192 page_poison=1 vsyscall=none slub_debug=P pti=on iommu=force resume=/dev/mapper/luks-89bf0df8-547f-4613-af07-215e5f62e9a9 rd.luks.uuid=luks-8a7154ec-8eeb-46c8-9d75-66fc4b80d665 rd.lvm.lv=rootvg/root rd.luks.uuid=luks-89bf0df8-547f-4613-af07-215e5f62e9a9 rd.lvm.lv=rootvg/swap rd.shell=0 quiet splash fips=1 boot=UUID=eda01e9b-b7e1-431b-9549-16d5dcddf665\"\n\nargs=\"ro audit=1 selinux=1 enforcing=1 audit_backlog_limit=8192 page_poison=1 vsyscall=none slub_debug=P pti=on iommu=force resume=/dev/mapper/luks-89bf0df8-547f-4613-af07-215e5f62e9a9 rd.luks.uuid=luks-8a7154ec-8eeb-46c8-9d75-66fc4b80d665 rd.lvm.lv=rootvg/root rd.luks.uuid=luks-89bf0df8-547f-4613-af07-215e5f62e9a9 rd.lvm.lv=rootvg/swap rd.shell=0 quiet splash fips=1 boot=UUID=eda01e9b-b7e1-431b-9549-16d5dcddf665\"\n\nIf selinux=1 is missing or set to 0, or enforcing=1 is missing or set to 0, this is a finding.","fixText":"Configure AlmaLinux OS 9 to verify correct operation of security functions.\n\nEdit the file \"/etc/selinux/config\" and add or modify the following line:\n\nSELINUX=enforcing \n\nUpdate the grub bootloader settings:\n\n$ grubby --args=\"selinux=1 enforcing=1\" --update-kernel=ALL\n\nA reboot is required for the changes to take effect.","ccis":["CCI-001084"]},{"vulnId":"V-269431","ruleId":"SV-269431r1050314_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the policycoreutils package installed.","description":"Policycoreutils contains the policy core utilities that are required for basic operation of an SELinux-enabled system.\n\nThese utilities include load_policy to load SELinux policies, setfile to label filesystems, newrole to switch roles, and run_init to run /etc/init.d scripts in the proper context.","checkContent":"Verify AlmaLinux OS 9 has the policycoreutils package installed with the following command:\n\n$ dnf list --installed policycoreutils\n\npolicycoreutils.x86_64    3.5-1.el9              @anaconda\n                                           \nIf the \"policycoreutils\" package is not installed, this is a finding.","fixText":"The policycoreutils package can be installed with the following command:\n \n$ dnf install policycoreutils","ccis":["CCI-001084"]},{"vulnId":"V-269432","ruleId":"SV-269432r1137695_rule","severity":"medium","ruleTitle":"Any AlmaLinux OS 9 world-writable directories must be owned by root, sys, bin, or an application user.","description":"If a world-writable directory is not owned by root, sys, bin, or an application user identifier (UID), unauthorized users may be able to modify files created by others.\n\nThe only authorized public directories are those temporary directories supplied with the system or those designed to be temporary file repositories. The setting is normally reserved for directories used by the system and by users for temporary file storage, (e.g., /tmp), and for directories requiring global read/write access.","checkContent":"Verify that world writable directories are owned by root, a system account, or an application account with the following command. It will discover and print world-writable directories that are not owned by root. Run it once for each local partition [PART] e.g. \"/\":\n\n$ find  PART  -xdev -type d -perm -0002 -uid +0 -print \n\nIf there is output, this is a finding.","fixText":"Configure all public directories to be owned by root or a system account to prevent unauthorized and unintended information transferred via shared system resources.\n\nSet the owner of all public directories as root or a system account using the command, replace \"[Public Directory]\" with any directory path not owned by root or a system account:\n\n$ chown root [Public Directory]","ccis":["CCI-001090"]},{"vulnId":"V-269433","ruleId":"SV-269433r1137695_rule","severity":"medium","ruleTitle":"A sticky bit must be set on all AlmaLinux OS 9 public directories.","description":"Preventing unauthorized information transfers mitigates the risk of information, including encrypted representations of information, produced by the actions of prior users/roles (or the actions of processes acting on behalf of prior users/roles) from being available to any current users/roles (or current processes) that obtain access to shared system resources (e.g., registers, main memory, hard disks) after those resources have been released back to information systems. The control of information in shared resources is also commonly referred to as object reuse and residual information protection.\n\nThis requirement generally applies to the design of an information technology product, but it can also apply to the configuration of particular information system components that are, or use, such products. This can be verified by acceptance/validation processes in DOD or other government agencies.\n\nThere may be shared resources with configurable protections (e.g., files in storage) that may be assessed on specific information system components.","checkContent":"Verify that all world-writable directories have the sticky bit set.\n\nDetermine if all world-writable directories have the sticky bit set by running the following command:\n\n$ find / -type d \\( -perm -0002 -a ! -perm -1000 \\) -exec ls -ld {} \\;\n\ndrwxrwxrwt 7 root root 4096 Jul 26 11:19 /tmp\n\nIf any of the returned directories are world-writable and do not have the sticky bit set (trailing \"t\"), this is a finding.","fixText":"Configure all world-writable directories to have the sticky bit set to prevent unauthorized and unintended information transferred via shared system resources.\n\nSet the sticky bit on all world-writable directories using the command, replace \"[World-Writable Directory]\" with any directory path missing the sticky bit:\n\n$ chmod a+t [World-Writable Directory]","ccis":["CCI-001090"]},{"vulnId":"V-269434","ruleId":"SV-269434r1050317_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must protect against or limit the effects of denial-of-service (DoS) attacks by ensuring rate-limiting measures on impacted network interfaces are implemented.","description":"DoS is a condition when a resource is not available for legitimate users. When this occurs, the organization either cannot accomplish its mission or must operate at degraded capacity.\n\nThis requirement addresses the configuration of the operating system to mitigate the impact of DoS attacks that have occurred or are ongoing on system availability. For each system, known and potential DoS attacks must be identified and solutions for each type implemented. A variety of technologies exist to limit or, in some cases, eliminate the effects of DoS attacks (e.g., limiting processes or establishing memory partitions). Employing increased capacity and bandwidth, combined with service redundancy, may reduce the susceptibility to some DoS attacks.","checkContent":"Verify \"nftables\" is configured to allow rate limits on any connection to the system with the following command:\n\n$ grep -i firewallbackend /etc/firewalld/firewalld.conf\n\n# FirewallBackend\nFirewallBackend=nftables\n\nIf the \"nftables\" is not set as the \"FirewallBackend\" default, this is a finding.","fixText":"Configure \"nftables\" to be the default \"firewallbackend\" for \"firewalld\" by adding or editing the following line in \"etc/firewalld/firewalld.conf\":\n\nFirewallBackend=nftables\n\nEstablish rate-limiting rules based on organization-defined types of DoS attacks on impacted network interfaces.","ccis":["CCI-002385"]},{"vulnId":"V-269435","ruleId":"SV-269435r1050318_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must be configured to use TCP syncookies.","description":"Denial of Service (DoS) is a condition when a resource is not available for legitimate users. When this occurs, the organization either cannot accomplish its mission or must operate at degraded capacity.\n\nThis requirement addresses the configuration of the operating system to mitigate the impact of DoS attacks that have occurred or are ongoing on system availability. For each system, known and potential DoS attacks must be identified and solutions for each type implemented. A variety of technologies exist to limit or, in some cases, eliminate the effects of DoS attacks (e.g., limiting processes or establishing memory partitions). Employing increased capacity and bandwidth, combined with service redundancy, may reduce the susceptibility to some DoS attacks.\n\nSatisfies: SRG-OS-000420-GPOS-00186, SRG-OS-000142-GPOS-00071","checkContent":"Verify AlmaLinux OS 9 is configured to use IPv4 TCP syncookies with the following command:\n\n$ sysctl net.ipv4.tcp_syncookies\n\nnet.ipv4.tcp_syncookies = 1\n\nCheck that the configuration files are present to enable this kernel parameter.\n\n$ /usr/lib/systemd/systemd-sysctl --cat-config | egrep -v '^(#|;)' | grep -F net.ipv4.tcp_syncookies | tail -1\n\nnet.ipv4.tcp_syncookies = 1\n\nIf the network parameter \"ipv4.tcp_syncookies\" is not equal to \"1\" or nothing is returned, this is a finding.","fixText":"Configure AlmaLinux OS 9 to use TCP syncookies using the following command:\n\n$ echo 'net.ipv4.tcp_syncookies = 1' > /etc/sysctl.d/60-syncookies.conf \n\nLoad settings from all system configuration files with the following command:\n\n$ sysctl --system","ccis":["CCI-002385","CCI-001095"]},{"vulnId":"V-269436","ruleId":"SV-269436r1050319_rule","severity":"high","ruleTitle":"All AlmaLinux OS 9 networked systems must have the OpenSSH client installed.","description":"Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered. \n\nThis requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. \n\nProtecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa.","checkContent":"Verify that AlmaLinux OS 9 has the openssh client package installed with the following command:\n\n$ dnf list --installed openssh\n\nInstalled Packages\nopenssh.x86_64     8.7p1-28.el9       @anaconda\n\nIf the \"openssh\" client package is not installed, this is a finding.","fixText":"The openssh client package can be installed with the following command:\n \n$ dnf install openssh","ccis":["CCI-002418"]},{"vulnId":"V-269437","ruleId":"SV-269437r1117271_rule","severity":"medium","ruleTitle":"All AlmaLinux OS 9 networked systems must implement SSH to protect the confidentiality and integrity of transmitted and received information, including information being prepared for transmission.","description":"Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered.\n\nThis requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification.\n\nProtecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa.\n\nSatisfies: SRG-OS-000424-GPOS-00188, SRG-OS-000426-GPOS-00190","checkContent":"Verify that \"sshd\" is active with the following command:\n\n$ systemctl status sshd\n\n sshd.service - OpenSSH server daemon\n     Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled)\n     Active: active (running) since Fri 2024-01-26 09:41:09 UTC; 2h 48min ago\n\n\nIf the \"sshd\" service is not enabled and active, this is a finding.","fixText":"To enable the sshd service run the following command:\n\n$ systemctl enable --now sshd","ccis":["CCI-002421","CCI-002422"]},{"vulnId":"V-269438","ruleId":"SV-269438r1117271_rule","severity":"medium","ruleTitle":"All AlmaLinux OS 9 networked systems must have the OpenSSH server installed.","description":"Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered.\n\nThis requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification.\n\nProtecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa.\n\nSatisfies: SRG-OS-000424-GPOS-00188, SRG-OS-000426-GPOS-00190","checkContent":"Verify that AlmaLinux OS 9 has the openssh-server package installed with the following command:\n\n$ dnf list --installed openssh-server\n\nInstalled Packages\nopenssh-server.x86_64     8.7p1-28.el9       @anaconda\n\nIf the \"openssh-server\" package is not installed, this is a finding.","fixText":"The openssh-server package can be installed with the following command:\n \n$ dnf install openssh-server","ccis":["CCI-002421","CCI-002422"]},{"vulnId":"V-269439","ruleId":"SV-269439r1050322_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not allow users to override SSH environment variables.","description":"SSH environment options potentially allow users to bypass access restriction in some configurations.","checkContent":"Verify the SSH daemon prevents users from overriding SSH environment variables with the following command:\n\n$ sshd -T | grep permituserenvironment\n\npermituserenvironment no\n\nIf the \"PermitUserEnvironment\" keyword is set to \"yes\", or no output is returned, this is a finding.","fixText":"To configure the system to prevent users from overriding SSH environment variables, add or modify the following line in \"/etc/ssh/sshd_config\":\n\nPermitUserEnvironment no\n\nAlternatively, add the setting to an include file if the line \"Include /etc/ssh/sshd_config.d/*.conf\" is found at the top of the \"/etc/ssh/sshd_config\" file:\n\n$ echo \"PermitUserEnvironment no\" > /etc/ssh/sshd_config.d/environment.conf\n\nRestart the SSH daemon for the settings to take effect:\n\n$ systemctl restart sshd.service","ccis":["CCI-002420"]},{"vulnId":"V-269441","ruleId":"SV-269441r1050324_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 wireless network adapters must be disabled.","description":"This requirement applies to wireless peripheral technologies (e.g., wireless mice, keyboards, displays, etc.) used with AlmaLinux OS 9 systems.\n\nWireless peripherals (e.g., Wi-Fi/Bluetooth/IR keyboards, mice and pointing devices, and near field communications [NFC]) present a unique challenge by creating an open, unsecured port on a computer.\n\nWireless peripherals must meet DOD requirements for wireless data transmission and be approved for use by the authorizing official (AO). Even though some wireless peripherals, such as mice and pointing devices, do not ordinarily carry information that need to be protected, modification of communications with these wireless peripherals may be used to compromise the AlmaLinux OS 9 operating system.\n\nSatisfies: SRG-OS-000481-GPOS-00481, SRG-OS-000299-GPOS-00117, SRG-OS-000300-GPOS-00118","checkContent":"Note: If the system does not have physical wireless network radios, this requirement is Not Applicable.\n\nVerify there are no wireless interfaces configured on the system with the following commands:\n\n$ nmcli radio all\n\nWIFI-HW  WIFI     WWAN-HW  WWAN\nenabled  enabled  missing  disabled\n\n$ nmcli device status\n\nDEVICE          TYPE      STATE                   CONNECTION\nwlp2s0          wifi      connected               cafe\nlo              loopback  connected (externally)  lo\np2p-dev-wlp2s0  wifi-p2p  disconnected            --\nenp3s0f2        ethernet  unavailable             --\n\nIf a wireless interface is configured and has not been documented and approved by the information system security officer (ISSO), this is a finding.","fixText":"Configure the system to disable all wireless network interfaces with the following command:\n\n$ nmcli radio all off","ccis":["CCI-002418","CCI-001444","CCI-001443"]},{"vulnId":"V-269442","ruleId":"SV-269442r1050325_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must not show boot up messages.","description":"Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the AlmaLinux OS 9 system or platform.\n\nAdditionally, personally identifiable information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives.\n\nThe structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.","checkContent":"Without using the \"quiet\" grub kernel parameter, the hardware and service information are printed to the console on boot and sometimes afterwards. This information could be useful for attackers with physical access, or so-called \"shoulder surfers\".\n\nBoot failures will still be shown, as will the LUKS password prompt.\n\nVerify the grub bootloader has the \"quiet\" option set with the following command:\n\n$ grubby --info=ALL | grep quiet\n\nargs=\"ro audit=1 audit_backlog_limit=8192 page_poison=1 vsyscall=none slub_debug=P pti=on iommu=force resume=/dev/mapper/luks-89bf0df8-547f-4613-af07-215e5f62e9a9 rd.luks.uuid=luks-8a7154ec-8eeb-46c8-9d75-66fc4b80d665 rd.lvm.lv=rootvg/root rd.luks.uuid=luks-89bf0df8-547f-4613-af07-215e5f62e9a9 rd.lvm.lv=rootvg/swap rd.shell=0 quiet splash fips=1 boot=UUID=eda01e9b-b7e1-431b-9549-16d5dcddf665 selinux=1 enforcing=1\"\n\nargs=\"ro audit=1 audit_backlog_limit=8192 page_poison=1 vsyscall=none slub_debug=P pti=on iommu=force resume=/dev/mapper/luks-89bf0df8-547f-4613-af07-215e5f62e9a9 rd.luks.uuid=luks-8a7154ec-8eeb-46c8-9d75-66fc4b80d665 rd.lvm.lv=rootvg/root rd.luks.uuid=luks-89bf0df8-547f-4613-af07-215e5f62e9a9 rd.lvm.lv=rootvg/swap rd.shell=0 quiet splash fips=1 boot=UUID=eda01e9b-b7e1-431b-9549-16d5dcddf665 selinux=1 enforcing=1\"\n\nIf nothing is returned, this is a finding.","fixText":"Configure the grub bootloader to use the \"quiet\" parameter using the following command:\n\n$ grubby --update-kernel=ALL --args=quiet","ccis":["CCI-001314"]},{"vulnId":"V-269443","ruleId":"SV-269443r1050326_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /var/log directory must be group-owned by root.","description":"Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the AlmaLinux OS 9 system or platform.\n\nAdditionally, personally identifiable information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives.\n\nThe structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.","checkContent":"Verify the \"/var/log\" directory is group-owned by root with the following command:\n\n$ stat -c \"%U:%G %#a %n\" /var/log\n\nroot:root 0755 /var/log\n\nIf \"/var/log\" does not have a group-owner of \"root\", this is a finding.","fixText":"Configure the group-owner of the directory \"/var/log\" to \"root\" by running the following command:\n\n$ chgrp root /var/log","ccis":["CCI-001314"]},{"vulnId":"V-269444","ruleId":"SV-269444r1050327_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /var/log/messages file must be group-owned by root.","description":"Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the AlmaLinux OS 9 system or platform.\n\nAdditionally, personally identifiable information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives.\n\nThe structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.","checkContent":"Verify the \"/var/log/messages\" file is group-owned by root with the following command:\n\n$ stat -c \"%U:%G %#a %n\" /var/log\n\nroot:root 0755 /var/log\n\nIf \"/var/log/messages\" does not have a group-owner of \"root\", this is a finding.","fixText":"Change the group-owner of the \"/var/log/messages\" file to \"root\" by running the following command:\n\n$ chgrp root /var/log/messages","ccis":["CCI-001314"]},{"vulnId":"V-269445","ruleId":"SV-269445r1050328_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /var/log/messages file must be owned by root.","description":"Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the AlmaLinux OS 9 system or platform.\n\nAdditionally, personally identifiable information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives.\n\nThe structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.","checkContent":"Verify the \"/var/log/messages\" file is owned by root with the following command:\n\n$ stat -c \"%U:%G %#a %n\" /var/log\n\nroot:root 0755 /var/log\n\nIf \"/var/log/messages\" does not have an owner of \"root\", this is a finding.","fixText":"Change the owner of the \"/var/log/messages\" file to \"root\" by running the following command:\n\n$ chown root /var/log/messages","ccis":["CCI-001314"]},{"vulnId":"V-269446","ruleId":"SV-269446r1050329_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /var/log/messages file must have mode 0640 or less permissive.","description":"Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the AlmaLinux OS 9 system or platform.\n\nAdditionally, personally identifiable information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives.\n\nThe structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.","checkContent":"Verify the \"/var/log/messages\" file has a mode of \"0640\" or less permissive with the following command:\n\n$ stat -c \"%U:%G %#a %n\" /var/log/messages\n\nroot:root 0600 /var/log/messages\n\nIf \"/var/log/messages\" does not have a mode of \"0640\" or less permissive, this is a finding.","fixText":"Configure the \"/var/log/messages\" file to have a mode of \"0640\" by running the following command:\n\n$ chmod 0640 /var/log/messages","ccis":["CCI-001314"]},{"vulnId":"V-269447","ruleId":"SV-269447r1050330_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /var/log directory must be owned by root.","description":"Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the AlmaLinux OS 9 system or platform.\n\nAdditionally, personally identifiable information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives.\n\nThe structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.","checkContent":"Verify the \"/var/log\" directory is owned by root with the following command:\n\n$ stat -c \"%U:%G %#a %n\" /var/log\n\nroot:root 0755 /var/log\n\nIf \"/var/log\" does not have an owner of \"root\", this is a finding.","fixText":"Configure the owner of the directory \"/var/log\" to \"root\" by running the following command:\n\n$ chown root /var/log","ccis":["CCI-001314"]},{"vulnId":"V-269448","ruleId":"SV-269448r1050331_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /var/log directory must have mode 0755 or less permissive.","description":"Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the AlmaLinux OS 9 system or platform.\n\nAdditionally, personally identifiable information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives.\n\nThe structure and content of error messages must be carefully considered by the organization and development team. The extent to which the information system is able to identify and handle error conditions is guided by organizational policy and operational requirements.","checkContent":"Verify that the \"/var/log\" directory has a mode of \"0755\" or less permissive with the following command:\n\n$ stat -c \"%U:%G %#a %n\" /var/log\n\nroot:root 0755 /var/log\n\nIf \"/var/log\" does not have a mode of \"0755\" or less permissive, this is a finding.","fixText":"Configure the \"/var/log\" directory to a mode of \"0755\" by running the following command:\n\n$ chmod 0755 /var/log","ccis":["CCI-001314"]},{"vulnId":"V-269449","ruleId":"SV-269449r1050620_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must implement nonexecutable data to protect its memory from unauthorized code execution.","description":"ExecShield uses the segmentation feature on all x86 systems to prevent execution in memory higher than a certain address. It writes an address as a limit in the code segment descriptor, to control where code can be executed, on a per-process basis.\n\nWhen the kernel places the memory regions of a process, such as the stack and heap, higher than this address, the hardware prevents execution in that address range.","checkContent":"Verify ExecShield is enabled on 64-bit AlmaLinux OS 9 systems with the following command:\n\n$ dmesg | grep '[NX|DX]*protection' \n\n[ 0.000000] NX (Execute Disable) protection: active\n\nIf \"dmesg\" does not show \"NX (Execute Disable) protection active\", this is a finding.","fixText":"Update the GRUB 2 bootloader configuration to ensure the noexec kernel parameter is not enabled using the following command:\n\n$ grubby --update-kernel=ALL --remove-args=noexec\n\nEnable the NX bit execute protection in the system BIOS.","ccis":["CCI-002824"]},{"vulnId":"V-269450","ruleId":"SV-269450r1050333_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enable mitigations against processor-based vulnerabilities.","description":"Kernel page-table isolation is a kernel feature that mitigates the Meltdown security vulnerability and hardens the kernel against attempts to bypass kernel address space layout randomization (KASLR).","checkContent":"Verify AlmaLinux OS 9 enables kernel page-table isolation with the following command:\n\n$ grubby --info=ALL | grep pti\n\nargs=\"ro audit=1 selinux=1 enforcing=1 audit_backlog_limit=8192 page_poison=1 vsyscall=none slub_debug=P pti=on iommu=force resume=/dev/mapper/luks-88bf0df8-547f-4613-af07-215e5f62e9a9 rd.luks.uuid=luks-8a7154ec-8eeb-47c8-9d75-66fd4b80d665 rd.lvm.lv=rootvg/root rd.luks.uuid=luks-89bf0df8-547f-4613-af07-215e5f62e9a9 rd.lvm.lv=rootvg/swap rd.shell=0 quiet splash fips=1 boot=UUID=eda01e9b-b7e1-431b-9549-16d5dcddf665\"\n\nIf the \"pti\" entry does not equal \"on\", or is missing, this is a finding.\n\nCheck that kernel page-table isolation is enabled by default to persist in kernel updates: \n\n$ grep pti /etc/default/grub\n\nGRUB_CMDLINE_LINUX=\"pti=on\"\n\nIf \"pti\" is not set to \"on\", is missing or commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enable kernel page-table isolation with the following command:\n\n$ grubby --update-kernel=ALL --args=\"pti=on\"\n\nAdd or modify the following line in \"/etc/default/grub\" to ensure the configuration survives kernel updates:\n\nGRUB_CMDLINE_LINUX=\"pti=on\"","ccis":["CCI-002824"]},{"vulnId":"V-269451","ruleId":"SV-269451r1069342_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must clear memory when it is freed to prevent use-after-free attacks.","description":"Some adversaries launch attacks with the intent of executing code in nonexecutable regions of memory or in memory locations that are prohibited. Security safeguards employed to protect memory include, for example, data execution prevention and address space layout randomization. Data execution prevention safeguards can be either hardware-enforced or software-enforced with hardware providing the greater strength of mechanism.\n\nPoisoning writes an arbitrary value to freed pages, so any modification or reference to that page after being freed or before being initialized will be detected and prevented. This prevents many types of use-after-free vulnerabilities at little performance cost. Also prevents leak of data and detection of corrupted memory.\n\ninit_on_free is a Linux kernel boot parameter that enhances security by initializing memory regions when they are freed, preventing data leakage. This process ensures that stale data in freed memory cannot be accessed by malicious programs.\n\nSLUB canaries add a randomized value (canary) at the end of SLUB-allocated objects to detect memory corruption caused by buffer overflows or underflows. Redzoning adds padding (red zones) around SLUB-allocated objects to detect overflows or underflows by triggering a fault when adjacent memory is accessed. SLUB canaries are often more efficient and provide stronger detection against buffer overflows compared to redzoning. SLUB canaries are supported in hardened Linux kernels like the ones provided by Linux-hardened.\n\nSLAB objects are blocks of physically contiguous memory. SLUB is the unqueued SLAB allocator.\n\nSatisfies: SRG-OS-000433-GPOS-00192, SRG-OS-000134-GPOS-00068","checkContent":"Verify that GRUB2 is configured to mitigate use-after-free vulnerabilities by employing memory poisoning.\n\nInspect the \"GRUB_CMDLINE_LINUX\" entry of /etc/default/grub as follows:\n$ sudo grep -i grub_cmdline_linux /etc/default/grub\nGRUB_CMDLINE_LINUX=\"... init_on_free=1\"\n\nIf \"init_on_free=1\"is missing or commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enable init_on_free with the following command:\n$ sudo grubby --update-kernel=ALL --args=\"init_on_free=1\"\n\nRegenerate the GRUB configuration:\n$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg\n\nReboot the system:\n$ sudo reboot","ccis":["CCI-002824"]},{"vulnId":"V-269452","ruleId":"SV-269452r1050335_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must implement address space layout randomization (ASLR) to protect its memory from unauthorized code execution.","description":"ASLR makes it more difficult for an attacker to predict the location of attack code they have introduced into a process' address space during an attempt at exploitation. \n\nAdditionally, ASLR makes it more difficult for an attacker to know the location of existing code to repurpose it using return oriented programming (ROP) techniques.","checkContent":"Verify AlmaLinux OS 9 is implementing ASLR with the following command:\n\n$ sysctl kernel.randomize_va_space\n\nkernel.randomize_va_space = 2\n\nIf \"kernel.randomize_va_space\" is not set to \"2\", or is missing, this is a finding.","fixText":"Configure the system to enable ASLR with the following command:\n\n$ echo 'kernel.randomize_va_space = 2' > /etc/sysctl.d/60-aslr.conf\n\nReload settings from all system configuration files with the following command:\n\n$ sysctl --system","ccis":["CCI-002824"]},{"vulnId":"V-269453","ruleId":"SV-269453r1050336_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must remove all software components after updated versions have been installed.","description":"Previous versions of software components that are not removed from the information system after updates have been installed may be exploited by some adversaries.","checkContent":"Verify AlmaLinux OS 9 removes all software components after updated versions have been installed with the following command:\n\n$ dnf config-manager --dump | grep clean\n\nclean_requirements_on_remove = 1\n\nIf \"clean_requirements_on_remove\" is not set to \"1\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to remove all software components after updated versions have been installed.\n\nRun the following command to change the configuration of DNF:\n\n$ dnf config-manager --setopt clean_requirements_on_remove=1 --save","ccis":["CCI-002617"]},{"vulnId":"V-269454","ruleId":"SV-269454r1184107_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must be a supported release.","description":"Security flaws with operating systems are discovered daily. Vendors are constantly updating and patching their products to address newly discovered security vulnerabilities. Organizations (including any contractor to the organization) are required to promptly install security-relevant software updates (e.g., patches, service packs, and hot fixes). Flaws discovered during security assessments, continuous monitoring, incident response activities, or information system error handling must also be addressed expeditiously.\n\nEnd Of Life dates for AlmaLinux OS 9 releases are as follows:\nActive/Full Support: 31 May 2027.\nSecurity only/Maintenance Support: 31 May 2032.","checkContent":"Verify that the version of AlmaLinux is vendor supported with the following command:\n\n$ cat /etc/almalinux-release \nAlmaLinux release 9.6 (Sage Margay)\n\nIf the installed version of AlmaLinux is not supported, this is a finding.","fixText":"Extended vendor support is available from TuxCare as part of the Enterprise Support for AlmaLinux product line. Access this (and the FIPS packages) by purchasing an ESU license key.","ccis":["CCI-002605"]},{"vulnId":"V-269455","ruleId":"SV-269455r1050338_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enable the SELinux targeted policy.","description":"Setting the SELinux policy to \"targeted\" or a more specialized policy ensures the system will confine processes that are likely to be targeted for exploitation, such as network or system services.\n\nNote: During the development or debugging of SELinux modules, it is common to temporarily place nonproduction systems in \"permissive\" mode. In such temporary cases, SELinux policies should be developed, and once work is completed, the system should be reconfigured to \"targeted\".","checkContent":"Verify the SELinux on AlmaLinux OS 9 is using the targeted policy with the following command:\n\n$ sestatus | grep policy\n\nLoaded policy name:             targeted\n\nIf the loaded policy name is not \"targeted\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to use the targeted SELINUX policy.\n\nEdit the file \"/etc/selinux/config\" and add or modify the following line:\n\n SELINUXTYPE=targeted \n\nA reboot is required for the changes to take effect.","ccis":["CCI-002696"]},{"vulnId":"V-269456","ruleId":"SV-269456r1050339_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the Advanced Intrusion Detection Environment (AIDE) package installed.","description":"Without verification of the security functions, security functions may not operate correctly and the failure may go unnoticed. Security function is defined as the hardware, software, and/or firmware of the information system responsible for enforcing the system security policy and supporting the isolation of code and data on which the protection is based. Security functionality includes, but is not limited to, establishing system accounts, configuring access authorizations (i.e., permissions, privileges), setting events to be audited, and setting intrusion detection parameters.\n\nThis requirement applies to operating systems performing security function verification/testing and/or systems and environments that require this functionality.\n\nSatisfies: SRG-OS-000445-GPOS-00199, SRG-OS-000446-GPOS-00200, SRG-OS-000363-GPOS-00150","checkContent":"Verify that AlmaLinux OS 9 has the AIDE package installed with the following command:\n\n$ dnf list --installed aide\n\naide.x86_64     0.16-100.el9     @AppStream\n\nIf AIDE is not installed, ask the system administrator (SA) how file integrity checks are performed on the system. \n\nIf there is no application installed to perform integrity checks, this is a finding.\n\nIf AIDE is installed, check if it has been initialized with the following command:\n\n$ /usr/sbin/aide --check\n\nIf the output is \"Couldn't open file /var/lib/aide/aide.db.gz for reading\", this is a finding.","fixText":"Install AIDE, initialize it, and perform a manual check.\n\nInstall AIDE:\n\n$ dnf install aide\n\nInitialize AIDE:\n\n$ /usr/sbin/aide --init\n\nExample output:\n\nStart timestamp: 2024-01-26 09:59:41 +0000 (AIDE 0.16)\nAIDE initialized database at /var/lib/aide/aide.db.new.gz\n\nNumber of entries: 27922\n\n---------------------------------------------------\nThe attributes of the (uncompressed) database(s):\n---------------------------------------------------\n\n/var/lib/aide/aide.db.new.gz\n  MD5      : p2o2MgLyXqLfsHGmHWR9nQ==\n  SHA1     : C5R2JcZCSv3KRz0dMrcQ0JZdZV4=\n  SHA256   : tUAG19G4gskBEfN+Z9pyVJi13rHA9f7P\n             d9R5OivGk40=\n  SHA512   : u26Um0w9hzsMmwZHNssCsmuxVqr9kBx+\n             Qx+9UBNQCBXlmWFCbq2Yx88BPCU5s/qy\n             njPIODmPRg4I09jxs5KYjw==\n\n\nEnd timestamp: 2024-01-26 09:59:49 +0000 (run time: 0m 8s)\n\nThe new database will need to be renamed to be read by AIDE:\n\n$ mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz\n\nPerform a manual check:\n\n$ /usr/sbin/aide --check\n\nExample output:\n\nStart timestamp: 2024-01-26 10:00:50 +0000 (AIDE 0.16)\nAIDE found NO differences between database and filesystem. Looks okay!!","ccis":["CCI-002696","CCI-002699","CCI-001744"]},{"vulnId":"V-269457","ruleId":"SV-269457r1050340_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must routinely check the baseline configuration for unauthorized changes and notify the system administrator when anomalies in the operation of any security functions are discovered.","description":"Unauthorized changes to the baseline configuration could make the system vulnerable to various attacks or allow unauthorized access to the operating system. Changes to operating system configurations can have unintended side effects, some of which may be relevant to security.\n\nDetecting such changes and providing an automated response can help avoid unintended, negative consequences that could ultimately affect the security state of the operating system. The operating system's information management officer (IMO)/information system security officer (ISSO) and system administrators (SAs) must be notified via email and/or monitoring system trap when there is an unauthorized modification of a configuration item.\n\nNotifications provided by information systems include messages to local computer consoles, and/or hardware indications, such as lights.\n\nThis capability must take into account operational requirements for availability for selecting an appropriate response. The organization may choose to shut down or restart the information system upon security function anomaly detection.\n\nSatisfies: SRG-OS-000447-GPOS-00201, SRG-OS-000446-GPOS-00200, SRG-OS-000363-GPOS-00150","checkContent":"Verify that AlmaLinux OS 9 routinely executes a file integrity scan for changes to the system baseline. The command used in the example will use a daily occurrence.\n\nCheck the cron directories for scripts controlling the execution and notification of results of the file integrity application. For example, if Advanced Intrusion Detection Environment (AIDE) is installed on the system, use the following commands:\n\n$ find /etc/cron* -name '*aide*'\n\n/etc/cron.d/0aide\n\n$ grep aide /etc/crontab /var/spool/cron/root\n\n/var/spool/cron/root:30 04 * * * root /usr/sbin/aide --check\n\n$ more /etc/cron.d/aide\n\n@daily root /usr/sbin/aide --check | /bin/mail -s \"$HOSTNAME - Daily aide integrity check run\" root\n\nIf the file integrity application does not exist, or a script file controlling the execution of the file integrity application does not exist, or the file integrity application does not notify designated personnel of changes, this is a finding.","fixText":"Configure the file integrity tool to run automatically on the system at least weekly and to notify designated personnel if baseline configurations are changed in an unauthorized manner. The AIDE tool can be configured to email designated personnel with the use of the cron system.\n\nThe following example output is generic. It will set cron to run AIDE daily and to send email at the completion of the analysis:\n\n$ more /etc/cron.d/0aide\n\n/usr/sbin/aide --check | echo \"Subject: $HOSTNAME  - Daily aide integrity check run\" | /bin/mail -t root","ccis":["CCI-002702","CCI-002699","CCI-001744"]},{"vulnId":"V-269458","ruleId":"SV-269458r1050341_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit system must audit local events.","description":"Without establishing what type of events occurred, the source of events, where events occurred, and the outcome of events, it would be difficult to establish, correlate, and investigate the events leading up to an outage or attack.\n\nIf option \"local_events\" is not set to \"yes\", only events from network will be aggregated.","checkContent":"Verify that the AlmaLinux OS 9 audit system is configured to audit local events with the following command:\n\n$ grep local_events /etc/audit/auditd.conf \n\nlocal_events = yes \n\nIf \"local_events\" is not set to \"yes\", if the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records for local events by adding or updating the following line in \"/etc/audit/auditd.conf\":\n\nlocal_events = yes \n\nThe audit daemon must be restarted for the changes to take effect.","ccis":["CCI-000169"]},{"vulnId":"V-269459","ruleId":"SV-269459r1050342_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 /etc/audit/auditd.conf file must have 0640 or less permissive to prevent unauthorized access.","description":"Without the capability to restrict which roles and individuals can select which events are audited, unauthorized personnel may be able to prevent the auditing of critical events. Misconfigured audits may degrade the system's performance by overwhelming the audit log. Misconfigured audits may also make it more difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.","checkContent":"Verify the mode of /etc/audit/auditd.conf with the command:\n\n$ stat -c \"%#a %n\" /etc/audit/auditd.conf\n\n0640 /etc/audit/auditd.conf\n\nIf \"/etc/audit/auditd.conf\" does not have a mode of \"0640\", this is a finding.","fixText":"Set the mode of /etc/audit/auditd.conf file to 0640 with the command:\n\n$ chmod 0640 /etc/audit/auditd.conf","ccis":["CCI-000171"]},{"vulnId":"V-269460","ruleId":"SV-269460r1050343_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must allow only the information system security manager (ISSM) (or individuals or roles appointed by the ISSM) to select which auditable events are to be audited.","description":"Without the capability to restrict which roles and individuals can select which events are audited, unauthorized personnel may be able to prevent the auditing of critical events. Misconfigured audits may degrade the system's performance by overwhelming the audit log. Misconfigured audits may also make it more difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.","checkContent":"Verify that the following files have a mode of \"0640\" or less permissive with the following command:\n\n$ stat -c \"%U:%G %#a %n\" /etc/audit/rules.d/*.rules /etc/audit/audit.rules /etc/audit/auditd.conf\n\nroot:root 0600 /etc/audit/rules.d/audit.rules\nroot:root 0640 /etc/audit/audit.rules\nroot:root 0640 /etc/audit/auditd.conf\n\nIf the files file have a mode more permissive than \"0640\", this is a finding.","fixText":"Configure the \"/etc/audit/rules.d/*.rules\", \"/etc/audit/audit.rules\" and \"/etc/audit/auditd.conf\" files to have a mode of \"0640\" with the following command: \n \n$ chmod 0640 /etc/audit/rules.d/*.rules /etc/audit/auditd.conf /etc/audit/audit.rules","ccis":["CCI-000171"]},{"vulnId":"V-269461","ruleId":"SV-269461r1050344_rule","severity":"medium","ruleTitle":"Successful/unsuccessful uses of the init command in AlmaLinux OS 9 must generate an audit record.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000477-GPOS-00222, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"init\" command with the following command:\n\n$ auditctl -l | grep init\n\n-a always,exit -S all -F path=/usr/sbin/init -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-init\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"init\" command.\n\nAdd the following lines to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/sbin/init -F perm=x -F auid>=1000 -F auid!=unset -k privileged-init\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000172"]},{"vulnId":"V-269462","ruleId":"SV-269462r1050345_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"poweroff\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000477-GPOS-00222, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"poweroff\" command with the following command:\n\n$ auditctl -l | grep poweroff\n\n-a always,exit -S all -F path=/usr/sbin/poweroff -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-poweroff\n\nIf the command does not return an audit rule for \"poweroff\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"poweroff\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/sbin/poweroff -F perm=x -F auid>=1000 -F auid!=unset -k privileged-poweroff\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000172"]},{"vulnId":"V-269463","ruleId":"SV-269463r1050346_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"reboot\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000477-GPOS-00222, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"reboot\" command with the following command:\n\n$ auditctl -l | grep reboot\n\n-a always,exit -S all -F path=/usr/sbin/reboot -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-reboot\n\nIf the command does not return an audit rule for \"reboot\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"reboot\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/sbin/reboot -F perm=x -F auid>=1000 -F auid!=unset -k privileged-reboot\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000172"]},{"vulnId":"V-269464","ruleId":"SV-269464r1050347_rule","severity":"medium","ruleTitle":"AlmaLinux must generate audit records for any use of the \"shutdown\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000477-GPOS-00222, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"shutdown\" command with the following command:\n\n$ auditctl -l | grep shutdown\n\n-a always,exit -S all -F path=/usr/sbin/shutdown -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-shutdown\n\nIf the command does not return an audit rule for \"shutdown\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"shutdown\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/sbin/shutdown -F perm=x -F auid>=1000 -F auid!=unset -k privileged-shutdown\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000172"]},{"vulnId":"V-269465","ruleId":"SV-269465r1050348_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enable Linux audit logging for the USBGuard daemon.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.","checkContent":"Note: If the USBGuard daemon is not installed and enabled, this requirement is not applicable. \n\nVerify AlmaLinux OS 9 enables Linux audit logging of the USBGuard daemon with the following commands. \n \n$ grep AuditBackend /etc/usbguard/usbguard-daemon.conf \n \nAuditBackend=LinuxAudit \n \nIf the \"AuditBackend\" entry does not equal \"LinuxAudit\", is missing, or the line is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to enable Linux audit logging of the USBGuard daemon by adding or modifying the following line in \"/etc/usbguard/usbguard-daemon.conf\": \n \nAuditBackend=LinuxAudit","ccis":["CCI-000172"]},{"vulnId":"V-269466","ruleId":"SV-269466r1050349_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must audit all uses of the delete_module, init_module and finit_module system calls.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000477-GPOS-00222, SRG-OS-000471-GPOS-00216","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"delete_module\", \"init_module\" and \"finit_module\" system calls with the following command:\n\n$ auditctl -l | grep module\n\n-a always,exit -F arch=b32 -S init_module,finit_module -F auid>=1000 -F auid!=unset -k module_chng\n-a always,exit -F arch=b64 -S init_module,finit_module -F auid>=1000 -F auid!=unset -k module_chng\n-a always,exit -F arch=b32 -S delete_module -F auid>=1000 -F auid!=unset -k module_chng\n-a always,exit -F arch=b64 -S delete_module -F auid>=1000 -F auid!=unset -k module_chng\n\nIf both the \"b32\" and \"b64\" audit rules are not defined for the \"delete_module\", \"init_module\" and \"finit_module\" system calls, or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate an audit event for any successful/unsuccessful use of the \"delete_module\", \"init_module\" and \"finit_module\" system calls.\n\nAdd the following lines to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F arch=b32 -S init_module,finit_module -F auid>=1000 -F auid!=unset -k module_chng\n-a always,exit -F arch=b64 -S init_module,finit_module -F auid>=1000 -F auid!=unset -k module_chng\n-a always,exit -F arch=b32 -S delete_module -F auid>=1000 -F auid!=unset -k module_chng\n-a always,exit -F arch=b64 -S delete_module -F auid>=1000 -F auid!=unset -k module_chng\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000172"]},{"vulnId":"V-269467","ruleId":"SV-269467r1050350_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /var/log/tallylog.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000392-GPOS-00172, SRG-OS-000470-GPOS-00214, SRG-OS-000473-GPOS-00218","checkContent":"Verify AlmaLinux OS 9 generates audit records for all account creations, modifications, disabling, and termination events that affect \"/var/log/tallylog\" with the following command:\n\n$ grep /var/log/tallylog /etc/audit/audit.rules\n\n-w /var/log/tallylog -p wa -k logins\n\nIf the command does not return a line or the line is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/var/log/tallylog\".\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-w /var/log/tallylog -p wa -k logins\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load\n\nReboot the server so the changes to take effect.","ccis":["CCI-002884","CCI-000172"]},{"vulnId":"V-269468","ruleId":"SV-269468r1050351_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must produce audit records containing information to establish the identity of any individual or process associated with the event.","description":"Without information that establishes the identity of the subjects (i.e., users or processes acting on behalf of users) associated with the events, security personnel cannot determine responsibility for the potentially harmful event.","checkContent":"Verify that the AlmaLinux OS 9 audit system is configured to resolve audit information before writing to disk with the following command:\n\n$ grep log_format /etc/audit/auditd.conf\n\nlog_format = ENRICHED\n\nIf the \"log_format\" option is not \"ENRICHED\", or the line is commented out, this is a finding.","fixText":"Edit the /etc/audit/auditd.conf file and add or update the \"log_format\" option:\n\nlog_format = ENRICHED\n\nThe audit daemon must be restarted for changes to take effect.","ccis":["CCI-001487"]},{"vulnId":"V-269469","ruleId":"SV-269469r1050352_rule","severity":"medium","ruleTitle":"The audit package must be installed on AlmaLinux OS 9.","description":"Without establishing what type of events occurred, the source of events, where events occurred, and the outcome of events, it would be difficult to establish, correlate, and investigate the events leading up to an outage or attack.\n\nAudit record content that may be necessary to satisfy this requirement includes, for example, time stamps, source and destination addresses, user/process identifiers, event descriptions, success/fail indications, filenames involved, and access control or flow control rules invoked.\n\nAssociating event types with detected events in audit logs provides a means of investigating an attack, recognizing resource usage or capacity thresholds, or identifying an improperly configured AlmaLinux OS 9 system.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000038-GPOS-00016, SRG-OS-000039-GPOS-00017, SRG-OS-000040-GPOS-00018, SRG-OS-000041-GPOS-00019, SRG-OS-000042-GPOS-00020, SRG-OS-000042-GPOS-00021, SRG-OS-000051-GPOS-00024, SRG-OS-000392-GPOS-00172, SRG-OS-000473-GPOS-00218, SRG-OS-000472-GPOS-00217, SRG-OS-000474-GPOS-00219, SRG-OS-000365-GPOS-00152, SRG-OS-000358-GPOS-00145, SRG-OS-000348-GPOS-00136, SRG-OS-000349-GPOS-00137, SRG-OS-000350-GPOS-00138, SRG-OS-000351-GPOS-00139, SRG-OS-000352-GPOS-00140, SRG-OS-000353-GPOS-00141, SRG-OS-000354-GPOS-00142, SRG-OS-000337-GPOS-00129, SRG-OS-000062-GPOS-00031, SRG-OS-000054-GPOS-00025","checkContent":"Verify that the audit package is installed with the following command:\n\n$ dnf list --installed audit\n\nInstalled Packages\naudit.x86_64    3.0.7-103.el9   @anaconda\n\nIf the \"audit\" package is not installed, this is a finding.","fixText":"Install the AlmaLinux OS 9 audit package with the following command:\n\n$ dnf install audit","ccis":["CCI-000130","CCI-000131","CCI-000132","CCI-000133","CCI-000134","CCI-000135","CCI-000154","CCI-002884","CCI-000172","CCI-003938","CCI-001889","CCI-001875","CCI-001877","CCI-001878","CCI-001879","CCI-001880","CCI-001881","CCI-001882","CCI-001914","CCI-000169","CCI-000158"]},{"vulnId":"V-269470","ruleId":"SV-269470r1050353_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /var/log/lastlog.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000473-GPOS-00218, SRG-OS-000470-GPOS-00214","checkContent":"Verify AlmaLinux OS 9 generates audit records for all account creations, modifications, disabling, and termination events that affect \"/var/log/lastlog\" with the following command:\n\n$ grep /var/log/lastlog /etc/audit/audit.rules\n\n-w /var/log/lastlog -p wa -k logins\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/var/log/lastlog\".\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-w /var/log/lastlog -p wa -k logins\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load\n\nReboot the server so the changes to take effect.","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269471","ruleId":"SV-269471r1050354_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"mount\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"mount\" command with the following command:\n\n$ auditctl -l | grep mount\n\n-a always,exit -F path=/usr/bin/mount -F perm=x -F auid>=1000 -F auid!=unset -k privileged-mount\n\nIf the command does not return an audit rule for \"/usr/bin/mount\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"umount\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/bin/mount -F perm=x -F auid>=1000 -F auid!=unset -k privileged-mount\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269472","ruleId":"SV-269472r1050355_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"umount\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"umount\" command with the following command:\n\n$ auditctl -l | grep umount\n\n-a always,exit -F path=/usr/bin/umount -F perm=x -F auid>=1000 -F auid!=unset -k privileged-mount\n\nIf the command does not return an audit rule for \"umount\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"umount\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/bin/umount -F perm=x -F auid>=1000 -F auid!=unset -k privileged-mount\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269473","ruleId":"SV-269473r1050356_rule","severity":"medium","ruleTitle":"Successful/unsuccessful uses of the umount2 system call in AlmaLinux OS 9 must generate an audit record.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"umount2\" system call with the following command:\n\n$ auditctl -l | grep umount2\n\n-a always,exit -F arch=b32 -S umount2 -F auid>=1000 -F auid!=unset -F key=perm_mod\n-a always,exit -F arch=b64 -S umount2 -F auid>=1000 -F auid!=unset -F key=perm_mod\n\nIf both the \"b32\" and \"b64\" audit rules are not defined for the \"umount2\" system call, or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"umount2\" syscall.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F arch=b32 -S umount2 -F auid>=1000 -F auid!=unset -k perm_mod\n-a always,exit -F arch=b64 -S umount2 -F auid>=1000 -F auid!=unset -k perm_mod\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269474","ruleId":"SV-269474r1050357_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must enable auditing of processes that start prior to the audit daemon.","description":"Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nIf auditing is enabled late in the startup process, the actions of some startup processes may not be audited. Some audit systems also maintain state information only available if auditing is enabled before a given process is created.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000473-GPOS-00218, SRG-OS-000254-GPOS-00095","checkContent":"Verify that GRUB 2 is configured to enable auditing of processes that start prior to the audit daemon with the following commands:\n\nCheck that the all GRUB2 entries have auditing enabled:\n\n$ grubby --info=ALL | grep audit\n\nargs=\"ro audit=1 selinux=1 enforcing=1 audit_backlog_limit=8192 page_poison=1 vsyscall=none slub_debug=P pti=on iommu=force boot=UUID=eda01e9b-b7e1-431b-9549-16d5dcddf665 resume=/dev/mapper/luks-89bf0df8-547f-4613-af07-215e5f62e9a9 rd.luks.uuid=luks-8a7154ec-8eeb-46c8-9d75-66fc4b80d665 rd.lvm.lv=rootvg/root rd.luks.uuid=luks-89bf0df8-547f-4613-af07-215e5f62e9a9 rd.lvm.lv=rootvg/swap fips=1 rd.shell=0 quiet splash\"\n\nIf \"audit\" is not set to \"1\" or is missing, this is a finding.\n\nCheck that auditing is enabled by default to persist in kernel updates: \n\n$ grep audit /etc/default/grub\n\nGRUB_CMDLINE_LINUX=\"audit=1 selinux=1 enforcing=1 audit_backlog_limit=8192 page_poison=1 vsyscall=none slub_debug=P pti=on iommu=force boot=UUID=eda01e9b-b7e1-431b-9549-16d5dcddf665 resume=/dev/mapper/luks-89bf0df8-547f-4613-af07-215e5f62e9a9 rd.luks.uuid=luks-8a7154ec-8eeb-46c8-9d75-66fc4b80d665 rd.lvm.lv=rootvg/root rd.luks.uuid=luks-89bf0df8-547f-4613-af07-215e5f62e9a9 rd.lvm.lv=rootvg/swap fips=1 rd.shell=0 quiet splash\"\n\nIf \"audit\" is not set to \"1\", is missing, or is commented out, this is a finding.","fixText":"Enable auditing of processes that start prior to the audit daemon with the following command:\n\n$ grubby --update-kernel=ALL --args=\"audit=1\"","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172","CCI-001464"]},{"vulnId":"V-269475","ruleId":"SV-269475r1134834_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must audit all uses of the truncate, ftruncate, creat, open, openat, and open_by_handle_at system calls.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000458-GPOS-00203, SRG-OS-000461-GPOS-00205","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"truncate\", \"ftruncate\", \"creat\", \"open\", \"openat\", and \"open_by_handle_at\" system calls with the following command:\n\n$ grep -E 'open|truncate|creat' /etc/audit/audit.rules\n\n-a always,exit -F arch=b32 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=perm_access\n-a always,exit -F arch=b64 -S open,truncate,ftruncate,creat,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=perm_access\n-a always,exit -F arch=b32 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -F key=perm_access\n-a always,exit -F arch=b64 -S open,truncate,ftruncate,creat,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -F key=perm_access\n\nIf both the \"b32\" and \"b64\" audit rules are not defined for the \"truncate\", \"ftruncate\", \"creat\", \"open\", \"openat\", and \"open_by_handle_at\" system calls, or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"truncate\", \"ftruncate\", \"creat\", \"open\", \"openat\", and \"open_by_handle_at\" syscalls.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F arch=b64 -S creat,open,openat,truncate,ftruncate,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -k access\n-a always,exit -F arch=b64 -S creat,open,openat,truncate,ftruncate,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -k access\n-a always,exit -F arch=b32 -S creat,open,openat,truncate,ftruncate,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -k access\n-a always,exit -F arch=b32 -S creat,open,openat,truncate,ftruncate,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -k access\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269476","ruleId":"SV-269476r1050359_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"chacl\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"chacl\" command with the following command:\n\n$ grep /chacl /etc/audit/audit.rules\n\n-a always,exit -S all -F path=/usr/bin/chacl -F perm=x -F auid>=1000 -F auid!=unset -F key=perm_mod\n\nIf the command does not return an audit rule for \"chacl\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"chacl\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/bin/chacl -F perm=x -F auid>=1000 -F auid!=unset -k perm_mod\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269477","ruleId":"SV-269477r1050360_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"chage\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"chage\" command with the following command:\n\n$ grep /chage /etc/audit/audit.rules\n\n-a always,exit -S all -F path=/usr/bin/chage -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-chage\n\nIf the command does not return an audit rule for \"chage\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"chage\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/bin/chage -F perm=x -F auid>=1000 -F auid!=unset -k privileged\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269478","ruleId":"SV-269478r1050361_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"chcon\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215, SRG-OS-000463-GPOS-00207, SRG-OS-000465-GPOS-00209","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"chcon\" command with the following command:\n\n$ grep /chcon /etc/audit/audit.rules\n\n-a always,exit -S all -F path=/usr/bin/chcon -F perm=x -F auid>=1000 -F auid!=unset -F key=perm_mod\n\nIf the command does not return an audit rule for \"chcon\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"chcon\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/bin/chcon -F perm=x -F auid>=1000 -F auid!=unset -k perm_mod\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269479","ruleId":"SV-269479r1050362_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must audit all uses of the chmod, fchmod, and fchmodat system calls.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000466-GPOS-00210, SRG-OS-000458-GPOS-00203","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"chmod\", \"fchmod\", and \"fchmodat\" system calls with the following command:\n\n$ auditctl -l | grep chmod\n\n-a always,exit -F arch=b32 -S chmod,fchmod,fchmodat -F auid>=1000 -F auid!=unset -k perm_mod\n-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat -F auid>=1000 -F auid!=unset -k perm_mod\n\nIf both the \"b32\" and \"b64\" audit rules are not defined for the \"chmod\", \"fchmod\", and \"fchmodat\" system calls, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"chmod\", \"fchmod\", and \"fchmodat\" syscalls.\n\nAdd the following lines to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F arch=b32 -S chmod,fchmod,fchmodat -F auid>=1000 -F auid!=unset -k perm_mod\n-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat -F auid>=1000 -F auid!=unset -k perm_mod\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269480","ruleId":"SV-269480r1050363_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must audit all uses of the chown, fchown, fchownat, and lchown system calls.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000466-GPOS-00210, SRG-OS-000458-GPOS-00203, SRG-OS-000474-GPOS-00219","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the  \"chown\", \"fchown\", \"fchownat\", and \"lchown\" system calls with the following command:\n\n$ auditctl -l | grep chown\n\n-a always,exit -F arch=b32 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=unset -k perm_mod\n-a always,exit -F arch=b64 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=unset -k perm_mod\n\nIf both the \"b32\" and \"b64\" audit rules are not defined for the \"chown\", \"fchown\", \"fchownat\", and \"lchown\" system calls, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"chown\", \"fchown\", and \"fchownat\" and \"lchown\" syscalls.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F arch=b32 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=unset -k perm_mod\n-a always,exit -F arch=b64 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=unset -k perm_mod\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269481","ruleId":"SV-269481r1050364_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"chsh\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"chsh\" command with the following command:\n\n$ auditctl -l | grep chsh\n\n-a always,exit -S all -F path=/usr/bin/chsh -F perm=x -F auid>=1000 -F auid!=unset -F key=priv_cmd\n\nIf the command does not return an audit rule for \"chsh\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"chsh\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/bin/chsh -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269482","ruleId":"SV-269482r1050365_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"crontab\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"crontab\" command with the following command:\n\n$ auditctl -l | grep crontab\n\n-a always,exit -S all -F path=/usr/bin/crontab -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-crontab\n\nIf the command does not return an audit rule for \"crontab\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"crontab\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/bin/crontab -F perm=x -F auid>=1000 -F auid!=unset -k privileged-crontab\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269483","ruleId":"SV-269483r1134836_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must audit all uses of the rename, unlink, rmdir, renameat, and unlinkat system calls.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210, SRG-OS-000467-GPOS-00211, SRG-OS-000468-GPOS-00212","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"rename\", \"unlink\", \"rmdir\", \"renameat\", and \"unlinkat\" system calls with the following command:\n\n$ auditctl -l | grep rename\n\n-a always,exit -F arch=b32 -S unlink,rename,rmdir,unlinkat,renameat -F auid>=1000 -F auid!=unset -F key=delete\n-a always,exit -F arch=b64 -S rename,rmdir,unlink,unlinkat,renameat -F auid>=1000 -F auid!=unset -F key=delete\n\nIf both the \"b32\" and \"b64\" audit rules are not defined for the \"rename\", \"unlink\", \"rmdir\", \"renameat\", and \"unlinkat\" system calls, or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"rename\", \"unlink\", \"rmdir\", \"renameat\", and \"unlinkat\" syscalls.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F arch=b64 -S rename,unlink,rmdir,unlinkat,renameat -F auid>=1000 -F auid!=unset -F key=delete\n-a always,exit -F arch=b32 -S rename,unlink,rmdir,unlinkat,renameat -F auid>=1000 -F auid!=unset -F key=delete\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269484","ruleId":"SV-269484r1050367_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for all account creations, modifications, disabling, and termination events that affect /var/log/faillock.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000477-GPOS-00222, SRG-OS-000476-GPOS-00221, SRG-OS-000475-GPOS-00220","checkContent":"Verify AlmaLinux OS 9 generates audit records for all account creations, modifications, disabling, and termination events that affect \"/var/log/faillock\" with the following command:\n\n$ grep /var/log/faillock /etc/audit/audit.rules\n\n-w /var/log/faillock -p wa -k logins\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records for all account creations, modifications, disabling, and termination events that affect \"/var/log/faillock\".\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-w /var/log/faillock -p wa -k logins\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load\n\nReboot the server so the changes to take effect.","ccis":["CCI-000172"]},{"vulnId":"V-269485","ruleId":"SV-269485r1050368_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"gpasswd\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"gpasswd\" command with the following command:\n\n$ auditctl -l | grep gpasswd\n\n-a always,exit -S all -F path=/usr/bin/gpasswd -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-gpasswd\n\nIf the command does not return an audit rule for \"gpasswd\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"gpasswd\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/bin/gpasswd -F perm=x -F auid>=1000 -F auid!=unset -k privileged-gpasswd\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269486","ruleId":"SV-269486r1050369_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must audit all uses of the kmod command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000471-GPOS-00216, SRG-OS-000477-GPOS-00222","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"kmod\" command with the following command:\n\n$ auditctl -l | grep kmod\n\n-a always,exit -F path=/usr/bin/kmod -F perm=x -F auid>=1000 -F auid!=unset -k modules\n\nIf the command does not return a line, or the line is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"kmod\" command.\n\nAdd the following lines to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/bin/kmod -F perm=x -F auid>=1000 -F auid!=unset -k modules\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269487","ruleId":"SV-269487r1050370_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"newgrp\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"newgrp\" command with the following command:\n\n$ auditctl -l | grep newgrp\n\n-a always,exit -S all -F path=/usr/bin/newgrp -F perm=x -F auid>=1000 -F auid!=unset -F key=priv_cmd\n\nIf the command does not return an audit rule for \"newgrp\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"newgrp\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/bin/newgrp -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269488","ruleId":"SV-269488r1050371_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"passwd\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"passwd\" command with the following command:\n\n$ auditctl -l | grep passwd\n\n-a always,exit -S all -F path=/usr/bin/passwd -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-passwd\n\nIf the command does not return an audit rule for \"passwd\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"passwd\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/bin/passwd -F perm=x -F auid>=1000 -F auid!=unset -k privileged-passwd\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269489","ruleId":"SV-269489r1050372_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"postdrop\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"postdrop\" command with the following command:\n\n$ auditctl -l | grep postdrop\n\n-a always,exit -S all -F path=/usr/sbin/postdrop -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-unix-update\n\nIf the command does not return an audit rule for \"postdrop\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"postdrop\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/sbin/postdrop -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269490","ruleId":"SV-269490r1050373_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"postqueue\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"postqueue\" command with the following command:\n\n$ auditctl -l | grep postqueue\n\n-a always,exit -S all -F path=/usr/sbin/postqueue -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-unix-update\n\nIf the command does not return an audit rule for \"postqueue\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"postqueue\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/sbin/postqueue -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269491","ruleId":"SV-269491r1050374_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"su\" command.","description":"Without generating audit record specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000064-GPOS-00033, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"su\" command with the following command:\n\n$ grep -w path=/usr/bin/su /etc/audit/audit.rules\n\n-a always,exit -S all -F path=/usr/bin/su -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-priv_change\n\nIf the command does not return a matching line, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"su\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -S all -F path=/usr/bin/su -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-priv_change\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-000172","CCI-002884"]},{"vulnId":"V-269492","ruleId":"SV-269492r1050375_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"sudo\" command.","description":"Without generating audit record specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000064-GPOS-00033, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"sudo\" command.\n\n$ grep -w path=/usr/bin/sudo /etc/audit/audit.rules\n\n-a always,exit -S all -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -F auid!=unset -F key=priv_cmd\n\nIf the command does not return a matching line, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"sudo\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -S all -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -F auid!=unset -F key=priv_cmd\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-000172","CCI-002884"]},{"vulnId":"V-269493","ruleId":"SV-269493r1050376_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"semanage\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000463-GPOS-00207, SRG-OS-000465-GPOS-00209","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"semanage\" command with the following command:\n\n$ auditctl -l | grep semanage\n\n-a always,exit -S all -F path=/usr/sbin/semanage -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-unix-update\n\nIf the command does not return an audit rule for \"semanage\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"semanage\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/sbin/semanage -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\"\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269494","ruleId":"SV-269494r1050377_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"setfacl\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"setfacl\" command with the following command:\n\n$ auditctl -l | grep setfacl\n\n-a always,exit -S all -F path=/usr/bin/setfacl -F perm=x -F auid>=1000 -F auid!=unset -F key=perm_mod\n\nIf the command does not return an audit rule for \"setfacl\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"setfacl\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/bin/setfacl -F perm=x -F auid>=1000 -F auid!=unset -k perm_mod\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269495","ruleId":"SV-269495r1050378_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"setfiles\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000463-GPOS-00207, SRG-OS-000465-GPOS-00209","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"setfiles\" command with the following command:\n\n$ auditctl -l | grep setfiles\n\n-a always,exit -F path=/usr/sbin/setfiles -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\n\nIf the command does not return an audit rule for \"setfiles\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"setfiles\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/sbin/setfiles -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269496","ruleId":"SV-269496r1050379_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"setsebool\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000463-GPOS-00207, SRG-OS-000465-GPOS-00209","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"setsebool\" command with the following command:\n\n$ auditctl -l | grep setsebool\n\n-a always,exit -S all -F path=/usr/sbin/setsebool -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged\n\nIf the command does not return an audit rule for \"setsebool\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"setsebool\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/sbin/setsebool -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269497","ruleId":"SV-269497r1050380_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"ssh-agent\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"ssh-agent\" command with the following command:\n\n$ auditctl -l | grep ssh-agent\n\n-a always,exit -S all -F path=/usr/bin/ssh-agent -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-ssh\n\nIf the command does not return an audit rule for \"ssh-agent\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"ssh-agent\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/bin/ssh-agent -F perm=x -F auid>=1000 -F auid!=unset -k privileged-ssh\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269498","ruleId":"SV-269498r1155270_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"ssh-keysign\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"ssh-keysign\" command with the following command:\n\n$ auditctl -l | grep ssh-keysign\n\n-a always,exit -S all -F path=/usr/libexec/openssh/ssh-keysign -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-ssh\n\nIf the command does not return an audit rule for \"ssh-keysign\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"ssh-keysign\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/libexec/openssh/ssh-keysign -F perm=x -F auid>=1000 -F auid!=unset -k privileged-ssh\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269499","ruleId":"SV-269499r1050382_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"sudoedit\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"sudoedit\" command with the following command:\n\n$ auditctl -l | grep sudoedit\n\n-a always,exit -S all -F path=/usr/bin/sudoedit -F perm=x -F auid>=1000 -F auid!=unset -F key=priv_cmd\n\nIf the command does not return an audit rule for \"sudoedit\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"sudoedit\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/bin/sudoedit -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269500","ruleId":"SV-269500r1050383_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"pam_timestamp_check\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"pam_timestamp_check\" command with the following command:\n\n$ auditctl -l | grep timestamp\n\n-a always,exit -S all -F path=/usr/sbin/pam_timestamp_check -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-pam_timestamp_check\n\nIf the command does not return an audit rule for \"pam_timestamp_check\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"pam_timestamp_check\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/sbin/pam_timestamp_check -F perm=x -F auid>=1000 -F auid!=unset -k privileged-pam_timestamp_check\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269501","ruleId":"SV-269501r1050384_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"unix_chkpwd\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"unix_chkpwd\" command with the following command:\n\n$ auditctl -l | grep unix_chkpwd\n\n-a always,exit -S all -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-unix-update\n\nIf the command does not return an audit rule for \"unix_chkpwd\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"unix_chkpwd\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269502","ruleId":"SV-269502r1050385_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"unix_update\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000064-GPOS-00033, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"unix_update\" command with the following command:\n\n$ grep /unix_update /etc/audit/audit.rules\n\n-a always,exit -S all -F path=/usr/sbin/unix_update -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-unix-update\n\nIf the command does not return an audit rule for \"unix_update\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"unix_update\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/sbin/unix_update -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-000172","CCI-002884"]},{"vulnId":"V-269503","ruleId":"SV-269503r1050386_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"userhelper\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"userhelper\" command with the following command:\n\n$ auditctl -l | grep userhelper\n\n-a always,exit -S all -F path=/usr/sbin/userhelper -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-unix-update\n\nIf the command does not return an audit rule for \"userhelper\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"userhelper\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/sbin/userhelper -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269504","ruleId":"SV-269504r1050387_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must generate audit records for any use of the \"usermod\" command.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"usermod\" command with the following command:\n\n$ auditctl -l | grep usermod\n\n-a always,exit -S all -F path=/usr/sbin/usermod -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged-usermod\n\nIf the command does not return an audit rule for \"usermod\" or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"usermod\" command.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F path=/usr/sbin/usermod -F perm=x -F auid>=1000 -F auid!=unset -k privileged-usermod\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269505","ruleId":"SV-269505r1050388_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must audit all uses of the setxattr, fsetxattr, lsetxattr, removexattr, fremovexattr, and lremovexattr system calls.","description":"Without generating audit records specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nWhen a user logs on, the auid is set to the uid of the account being authenticated. Daemons are not user sessions and have the loginuid set to -1. The auid representation is an unsigned 32-bit integer, which equals 4294967295. The audit system interprets -1, 4294967295, and \"unset\" in the same way.\n\nThe system call rules are loaded into a matching engine that intercepts each system call made by all programs on the system. Therefore, it is very important to use system call rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining system calls into one rule whenever possible.\n\nSatisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000458-GPOS-00203, SRG-OS-000462-GPOS-00206, SRG-OS-000463-GPOS-00207, SRG-OS-000471-GPOS-00215, SRG-OS-000474-GPOS-00219, SRG-OS-000466-GPOS-00210, SRG-OS-000064-GPOS-00033","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of the \"setxattr\", \"fsetxattr\", \"lsetxattr\", \"removexattr\", \"fremovexattr\", and \"lremovexattr\" system calls with the following command:\n\n$ auditctl -l | grep xattr\n\n-a always,exit -F arch=b32 -S setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F auid>=1000 -F auid!=unset -F key=perm_mod\n-a always,exit -F arch=b64 -S setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F auid>=1000 -F auid!=unset -F key=perm_mod\n-a always,exit -F arch=b32 -S setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F auid=0 -F key=perm_mod\n-a always,exit -F arch=b64 -S setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F auid=0 -F key=perm_mod\n\nIf both the \"b32\" and \"b64\" audit rules are not defined for the \"setxattr\", \"fsetxattr\", \"lsetxattr\", \"removexattr\", \"fremovexattr\", and \"lremovexattr\" system calls, or any of the lines returned are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to generate audit records upon successful/unsuccessful attempts to use the \"setxattr\", \"fsetxattr\", \"lsetxattr\", \"removexattr\", \"fremovexattr\", and \"lremovexattr\" syscalls.\n\nAdd the following to the \"/etc/audit/rules.d/audit.rules\" file:\n\n-a always,exit -F arch=b32 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid>=1000 -F auid!=unset -k perm_mod\n-a always,exit -F arch=b64 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid>=1000 -F auid!=unset -k perm_mod\n-a always,exit -F arch=b32 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid=0 -k perm_mod\n-a always,exit -F arch=b64 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid=0 -k perm_mod\n\nMerge the rules into /etc/audit/audit.rules:\n\n$ augenrules --load","ccis":["CCI-000130","CCI-000135","CCI-000169","CCI-002884","CCI-000172"]},{"vulnId":"V-269506","ruleId":"SV-269506r1101808_rule","severity":"low","ruleTitle":"AlmaLinux OS 9 must allocate an audit_backlog_limit of sufficient size to capture processes that start prior to the audit daemon.","description":"Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.\n\nIf auditing is enabled late in the startup process, the actions of some startup processes may not be audited. Some audit systems also maintain state information only available if auditing is enabled before a given process is created.\n\nAudit records can be generated from various components within the information system (e.g., module or policy filter).\n\nAllocating an audit_backlog_limit of sufficient size is critical in maintaining a stable boot process. With an insufficient limit allocated, the system is susceptible to boot failures and crashes.","checkContent":"Verify AlmaLinux OS 9 allocates a sufficient audit_backlog_limit to capture processes that start prior to the audit daemon with the following command:\n\n$ sudo grubby --info=ALL | grep args | grep 'audit_backlog_limit'\n\nIf the command returns any outputs, and audit_backlog_limit is less than \"8192\", this is a finding.","fixText":"Configure AlmaLinux OS 9 to allocate sufficient audit_backlog_limit to capture processes that start prior to the audit daemon with the following command:\n\n$ grubby --update-kernel=ALL --args=audit_backlog_limit=8192","ccis":["CCI-001849"]},{"vulnId":"V-269507","ruleId":"SV-269507r1050390_rule","severity":"low","ruleTitle":"AlmaLinux OS 9 must use a separate file system for the system audit data path.","description":"Placing \"/var/log/audit\" in its own partition enables better separation between audit files and other system files, and helps ensure that auditing cannot be halted due to the partition running out of space.","checkContent":"Verify that a separate file system/partition has been created for the system audit data path with the following command:\n\nNote: /var/log/audit is used as the example as it is a common location.\n\n$ findmnt /var/log/audit\n\nTARGET         SOURCE                                                FSTYPE OPTIONS\n/var/log/audit /dev/mapper/luks-29b74747-2f82-4472-82f5-0b5eb763effc xfs    rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota\n\nIf no line is returned, this is a finding.","fixText":"Migrate the system audit data path onto a separate file system.","ccis":["CCI-001849"]},{"vulnId":"V-269508","ruleId":"SV-269508r1050391_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must allocate audit record storage capacity to store at least one week's worth of audit records.","description":"To ensure AlmaLinux OS 9 systems have a sufficient storage capacity in which to write the audit logs, AlmaLinux OS 9 needs to be able to allocate audit record storage capacity.\n\nThe task of allocating audit record storage capacity is usually performed during initial installation of AlmaLinux OS 9.","checkContent":"Verify AlmaLinux OS 9 allocates audit record storage capacity to store at least one week of audit records when audit records are not immediately sent to a central audit record storage facility.\n\nNote: The partition size needed to capture a week of audit records is based on the activity level of the system and the total storage capacity available. Typically 10GB of storage space for audit records should be sufficient.\n\nDetermine which partition the audit records are being written to with the following command:\n\n$ grep -w log_file /etc/audit/auditd.conf\n\nlog_file = /var/log/audit/audit.log \n\nCheck the size of the partition that audit records are written to with the following command and verify whether it is sufficiently large:\n\n$ df -h /var/log/audit/\n\nFilesystem                                             Size  Used Avail Use% Mounted on\n/dev/mapper/luks-29b74747-2f82-4472-82f5-0b8eb763effc 1002M   77M  926M   8% /var/log/audit\n\nIf the audit record partition is not allocated for sufficient storage capacity, this is a finding.","fixText":"Allocate enough storage capacity for at least one week of audit records when audit records are not immediately sent to a central audit record storage facility.\n\nIf audit records are stored on a partition made specifically for audit records, resize the partition with sufficient space to contain one week of audit records.\n\nIf audit records are not stored on a partition made specifically for audit records, a new partition with sufficient space will need be to be created.","ccis":["CCI-001849"]},{"vulnId":"V-269509","ruleId":"SV-269509r1050392_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audispd-plugins package must be installed.","description":"\"audispd-plugins\" provides plugins for the real-time interface to the audit subsystem, \"audispd\". These plugins can do things like relay events to remote machines or analyze events for suspicious behavior.","checkContent":"Verify that AlmaLinux OS 9 has the audispd-plugins package for installed with the following command:\n\n$ dnf list --installed audispd-plugins\n\naudispd-plugins.x86_64       3.0.7-103.el9            @anaconda\n\nIf the \"audispd-plugins\" package is not installed, this is a finding.","fixText":"The audispd-plugins package can be installed with the following command:\n \n$ dnf install audispd-plugins","ccis":["CCI-001851"]},{"vulnId":"V-269510","ruleId":"SV-269510r1050393_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must label all offloaded audit logs before sending them to the central log server.","description":"When audit logs are not labelled before they are sent to a central log server, the audit data will not be able to be analyzed and tied back to the correct system.","checkContent":"Verify that AlmaLinux OS 9 Audit Daemon is configured to label all offloaded audit logs, with the following command:\n\n$ grep name_format /etc/audit/auditd.conf\n\nname_format = HOSTNAME\n\nIf the \"name_format\" option is not \"HOSTNAME\", \"fqd\", or \"numeric\", or the line is commented out, this is a finding.","fixText":"Edit the /etc/audit/auditd.conf file and add or update the \"name_format\" option:\n\nname_format = HOSTNAME\n\nThe audit daemon must be restarted for changes to take effect.","ccis":["CCI-001851"]},{"vulnId":"V-269511","ruleId":"SV-269511r1050394_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must take appropriate action when the internal event queue is full.","description":"The audit system should have an action setup in the event the internal event queue becomes full so that no data is lost.","checkContent":"Verify that AlmaLinux OS 9 audit system is configured to take an appropriate action when the internal event queue is full:\n\n$ grep -i overflow_action /etc/audit/auditd.conf \n\noverflow_action = SYSLOG\n\nIf the value of the \"overflow_action\" option is not set to \"SYSLOG\", \"SINGLE\", \"HALT\" or the line is commented out, ask the system administrator (SA) to indicate how the audit logs are offloaded to a different system or media.\n\nIf there is no evidence that the transfer of the audit logs being offloaded to another system or media takes appropriate action if the internal event queue becomes full, this is a finding.","fixText":"Edit the /etc/audit/auditd.conf file and add or update the \"overflow_action\" option:\n\noverflow_action = SYSLOG\n\nThe audit daemon must be restarted for changes to take effect.","ccis":["CCI-001851"]},{"vulnId":"V-269512","ruleId":"SV-269512r1050395_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must be configured to offload audit records onto a different system from the system being audited via syslog.","description":"The auditd service does not include the ability to send audit records to a centralized server for management directly. \n\nHowever, it can use a plug-in for audit event multiplexor (audispd) to pass audit records to the local syslog server.","checkContent":"Verify AlmaLinux OS 9 is configured use the audisp-remote syslog service with the following command:\n\n$ grep active /etc/audit/plugins.d/syslog.conf \n\nactive = yes\n\nIf the \"active\" keyword does not have a value of \"yes\", the line is commented out, or the line is missing, this is a finding.","fixText":"Edit the /etc/audit/plugins.d/syslog.conf file and add or update the \"active\" option:\n\nactive = yes\n\nThe audit daemon must be restarted for changes to take effect.","ccis":["CCI-001851"]},{"vulnId":"V-269513","ruleId":"SV-269513r1050396_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must authenticate the remote logging server for offloading audit logs via rsyslog.","description":"Information stored in one location is vulnerable to accidental or incidental deletion or alteration.\n\nOff-loading is a common process in information systems with limited audit storage capacity.","checkContent":"Verify AlmaLinux OS 9 authenticates the remote logging server for offloading audit logs with the following command:\n\n$ grep -i '$ActionSendStreamDriverAuthMode' /etc/rsyslog.conf /etc/rsyslog.d/*.conf \n\n/etc/rsyslog.d/stig.conf:$ActionSendStreamDriverAuthMode x509/name\n\nIf the value of the \"$ActionSendStreamDriverAuthMode\" option is not set to \"x509/name\" or the line is commented out, ask the system administrator (SA) to indicate how the audit logs are offloaded to a different system or media. \n\nIf there is no evidence that the transfer of the audit logs being offloaded to another system or media is encrypted, this is a finding.","fixText":"Configure AlmaLinux OS 9 to authenticate the remote logging server for offloading audit logs by setting the following option in \"/etc/rsyslog.conf\" or \"/etc/rsyslog.d/[customfile].conf\":\n\n$ActionSendStreamDriverAuthMode x509/name","ccis":["CCI-001851"]},{"vulnId":"V-269514","ruleId":"SV-269514r1050397_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must encrypt the transfer of audit records offloaded onto a different system or media from the system being audited via rsyslog.","description":"Information stored in one location is vulnerable to accidental or incidental deletion or alteration.\n\nOff-loading is a common process in information systems with limited audit storage capacity.","checkContent":"Verify AlmaLinux OS 9 encrypts audit records offloaded onto a different system or media from the system being audited via rsyslog with the following command:\n\n$ grep -i '$ActionSendStreamDriverMode' /etc/rsyslog.conf /etc/rsyslog.d/*.conf \n\n/etc/rsyslog.d/stig.conf:$ActionSendStreamDriverMode 1\n\nIf the value of the \"$ActionSendStreamDriverMode\" option is not set to \"1\" or the line is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to encrypt offloaded audit records via rsyslog by setting the following options in \"/etc/rsyslog.conf\" or \"/etc/rsyslog.d/[customfile].conf\":\n\n$ActionSendStreamDriverMode 1","ccis":["CCI-001851"]},{"vulnId":"V-269515","ruleId":"SV-269515r1050398_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must encrypt, via the gtls driver, the transfer of audit records offloaded onto a different system or media from the system being audited via rsyslog.","description":"Information stored in one location is vulnerable to accidental or incidental deletion or alteration.\n\nOff-loading is a common process in information systems with limited audit storage capacity.","checkContent":"Verify AlmaLinux OS 9 uses the gtls driver to encrypt audit records offloaded onto a different system or media from the system being audited with the following command:\n\n$ grep -i '$DefaultNetstreamDriver' /etc/rsyslog.conf /etc/rsyslog.d/*.conf \n\n/etc/rsyslog.d/stig.conf:$DefaultNetstreamDriver gtls\n\nIf the value of the \"$DefaultNetstreamDriver\" option is not set to \"gtls\" or the line is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to use the gtls driver to encrypt offloaded audit records by setting the following options in \"/etc/rsyslog.conf\" or \"/etc/rsyslog.d/[customfile].conf\":\n\n$DefaultNetstreamDriver gtls","ccis":["CCI-001851"]},{"vulnId":"V-269516","ruleId":"SV-269516r1050399_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the rsyslog package installed.","description":"rsyslogd is a system utility providing support for message logging. Support for both internet and Unix domain sockets enables this utility to support both local and remote logging. Couple this utility with \"gnutls\" (which is a secure communications library implementing the SSL, TLS, and DTLS protocols), to create a method to securely encrypt and offload auditing.","checkContent":"Verify that AlmaLinux OS 9 has the rsyslog package installed with the following command:\n\n$ dnf list --installed rsyslog\n\nrsyslog.x86_64       8.2102.0-113.el9_2.1                           @appstream\n\nIf the \"rsyslog\" package is not installed, this is a finding.","fixText":"The rsyslog package can be installed with the following command:\n \n$ dnf install rsyslog","ccis":["CCI-001851"]},{"vulnId":"V-269517","ruleId":"SV-269517r1050400_rule","severity":"low","ruleTitle":"AlmaLinux OS 9 must be configured to forward audit records via TCP to a different system or media from the system being audited via rsyslog.","description":"Information stored in one location is vulnerable to accidental or incidental deletion or alteration.\n\nOff-loading is a common process in information systems with limited audit storage capacity.","checkContent":"Verify that AlmaLinux OS 9 audit system offloads audit records onto a different system or media from the system being audited via rsyslog using TCP with the following command:\n\n$ grep @@ /etc/rsyslog.conf /etc/rsyslog.d/*.conf\n\n/etc/rsyslog.d/stig.conf:*.* @@loghost.example.com\"\n\nIf a remote server is not configured, or the line is commented out, ask the system administrator (SA) to indicate how the audit logs are offloaded to a different system or media. \n\nIf there is no evidence that the audit logs are being offloaded to another system or media, this is a finding.","fixText":"Configure AlmaLinux OS 9 to offload audit records onto a different system or media from the system being audited via TCP using rsyslog by specifying the remote logging server in \"/etc/rsyslog.conf\"\" or \"/etc/rsyslog.d/[customfile].conf\" with the name or IP address of the log aggregation server.\n\n*.* @@[server]:[port]\"","ccis":["CCI-001851"]},{"vulnId":"V-269518","ruleId":"SV-269518r1050401_rule","severity":"medium","ruleTitle":"The rsyslog service on AlmaLinux OS 9 must be active.","description":"The \"rsyslog\" service must be running to provide logging services, which are essential to system administration.","checkContent":"Verify that \"rsyslog\" is active with the following command:\n\n$ systemctl status rsyslog \nrsyslog.service - System Logging Service\n     Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; preset: enabled)\n     Active: active (running) since Mon 2024-03-04 10:10:08 UTC; 3h 20min ago\n\nIf the rsyslog service is not active, this is a finding.","fixText":"To enable the rsyslog service, run the following command:\n\n$ systemctl enable --now rsyslog","ccis":["CCI-001851"]},{"vulnId":"V-269519","ruleId":"SV-269519r1050402_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must take action when allocated audit record storage volume reaches 95 percent of the audit record storage capacity.","description":"If security personnel are not notified immediately when storage volume reaches 75 percent usage, they are unable to plan for audit record storage capacity expansion.","checkContent":"Verify AlmaLinux OS 9 takes action when allocated audit record storage volume reaches 95 percent of the repository maximum audit record storage capacity with the following command:\n\n$ grep -w admin_space_left /etc/audit/auditd.conf\n\nadmin_space_left = 5%\n\nIf the value of the \"admin_space_left\" keyword is not set to 5 percent of the storage volume allocated to audit logs, or if the line is commented out, ask the system administrator (SA) to indicate how the system is taking action if the allocated storage is about to reach capacity. If the \"space_left\" value is not configured to the correct value, this is a finding.","fixText":"Configure AlmaLinux OS 9 to initiate an action when allocated audit record storage volume reaches 95 percent of the repository maximum audit record storage capacity by adding/modifying the following line in the /etc/audit/auditd.conf file.\n\nadmin_space_left  = 5%","ccis":["CCI-001855"]},{"vulnId":"V-269520","ruleId":"SV-269520r1050403_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must take action when allocated audit record storage volume reaches 95 percent of the repository maximum audit record storage capacity.","description":"If security personnel are not notified immediately when storage volume reaches 75 percent usage, they are unable to plan for audit record storage capacity expansion.","checkContent":"Verify that AlmaLinux OS 9 is configured to take action in the event of allocated audit record storage volume reaches 95 percent of the repository maximum audit record storage capacity with the following command:\n\n$ grep admin_space_left_action /etc/audit/auditd.conf\n\nadmin_space_left_action = single\n\nIf the value of the \"admin_space_left_action\" is not set to \"single\", or if the line is commented out, ask the system administrator (SA) to indicate how the system is providing real-time alerts to the SA and information system security officer (ISSO).\n\nIf there is no evidence that real-time alerts are configured on the system, this is a finding.","fixText":"Configure the \"auditd\" service  to take action in the event of allocated audit record storage volume reaches 95 percent of the repository maximum audit record storage capacity.\n\nEdit the following line in \"/etc/audit/auditd.conf\" to ensure that the system is forced into single user mode in the event the audit record storage volume is about to reach maximum capacity:\n\nadmin_space_left_action = single \n\nThe audit daemon must be restarted for changes to take effect.","ccis":["CCI-001855"]},{"vulnId":"V-269521","ruleId":"SV-269521r1101829_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must take action when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity.","description":"If security personnel are not notified immediately when storage volume reaches a maximum of 75 percent utilization, they are unable to plan for audit record storage capacity expansion. The notification can be set to trigger at lower utilization thresholds at the information system security officer's (ISSO's) discretion.","checkContent":"Verify AlmaLinux OS 9 takes action when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity with the following command:\n\n$ grep -w space_left /etc/audit/auditd.conf\n\nspace_left = 25%\n\nIf the value of the \"space_left\" keyword is not set to 25 percent or greater of the storage volume allocated to audit logs, or if the line is commented out, ask the system administrator (SA) to indicate how the system is providing real-time alerts to the SA and ISSO. If the \"space_left\" value is not configured to the value 25% or more, this is a finding.","fixText":"Configure AlmaLinux OS 9 to initiate an action to notify the SA and ISSO (at a minimum) when allocated audit record storage volume reaches (at most) 75 percent of the repository maximum audit record storage capacity by adding/modifying the following line in the /etc/audit/auditd.conf file.\n\nspace_left  = 25%","ccis":["CCI-001855"]},{"vulnId":"V-269522","ruleId":"SV-269522r1050604_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must notify the system administrator (SA) and information system security officer (ISSO) (at a minimum) when allocated audit record storage volume reaches 75 percent usage.","description":"If security personnel are not notified immediately when storage volume reaches 75 percent usage, they are unable to plan for audit record storage capacity expansion.","checkContent":"Verify AlmaLinux OS 9 notifies the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity with the following command:\n\n$ grep -w space_left_action /etc/audit/auditd.conf\n\nspace_left_action = email\n\nIf the value of the \"space_left_action\" is not set to \"email\", or if the line is commented out, ask the SA to indicate how the system is providing real-time alerts to the SA and ISSO.\n\nIf there is no evidence that real-time alerts are configured on the system, this is a finding.","fixText":"Configure AlmaLinux OS 9 to initiate an action to notify the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity by adding/modifying the following line in the /etc/audit/auditd.conf file.\n\nspace_left_action = email","ccis":["CCI-001855"]},{"vulnId":"V-269523","ruleId":"SV-269523r1050406_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 System Administrator (SA) and/or information system security officer (ISSO) (at a minimum) must be alerted of an audit processing failure event.","description":"It is critical for the appropriate personnel to be aware if a system is at risk of failing to process audit logs as required. Without this notification, the security personnel may be unaware of an impending failure of the audit capability, and system operation may be adversely affected.\n\nAudit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded.\n\nThis requirement applies to each audit data storage repository (i.e., distinct information system component where audit records are stored), the centralized audit storage capacity of organizations (i.e., all audit data storage repositories combined), or both.","checkContent":"Verify that AlmaLinux OS 9 is configured to notify the SA and/or ISSO (at a minimum) in the event of an audit processing failure with the following command:\n\n$ grep action_mail_acct /etc/audit/auditd.conf\n\naction_mail_acct = root\n\nIf the value of the \"action_mail_acct\" keyword is not set to \"root\" and/or other accounts for security personnel, the \"action_mail_acct\" keyword is missing, or the retuned line is commented out, ask the SA to indicate how they and the ISSO are notified of an audit process failure (e.g. using syslog). If there is no evidence of the proper personnel being notified of an audit processing failure, this is a finding.","fixText":"Configure the \"auditd\" service to notify the SA and ISSO in the event of an audit processing failure.\n\nEdit the following line in \"/etc/audit/auditd.conf\" to ensure that administrators are notified via email for those situations:\n\naction_mail_acct = root","ccis":["CCI-000139"]},{"vulnId":"V-269524","ruleId":"SV-269524r1050407_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have mail aliases to notify the information system security officer (ISSO) and system administrator (SA) (at a minimum) in the event of an audit processing failure.","description":"It is critical for the appropriate personnel to be aware if a system is at risk of failing to process audit logs as required. Without this notification, the security personnel may be unaware of an impending failure of the audit capability, and system operation may be adversely affected.\n\nAudit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded.\n\nThis requirement applies to each audit data storage repository (i.e., distinct information system component where audit records are stored), the centralized audit storage capacity of organizations (i.e., all audit data storage repositories combined), or both.","checkContent":"Note: If postfix is not installed or used to send email remotely, then this requirement is Not Applicable.\n\nVerify that AlmaLinux OS 9 is configured to notify the appropriate interactive users in the event of an audit processing failure.\n\nFind the alias maps that are being used with the following command:\n\n$ postconf alias_maps \n\nalias_maps = hash:/etc/aliases\n\nQuery the Postfix alias maps for an alias for the root user with the following command:\n\n$ postmap -q root hash:/etc/aliases\nisso\n\nIf an alias is not set, this is a finding.","fixText":"Edit the aliases map file (by default /etc/aliases) used by Postfix and configure a root alias (using the user isso as an example):\n\nroot:    isso\n\nUpdate the aliases database with the command:\n\n$ newaliases","ccis":["CCI-000139"]},{"vulnId":"V-269525","ruleId":"SV-269525r1050408_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit system must take appropriate action when an error writing to the audit storage volume occurs.","description":"It is critical that when the operating system is at risk of failing to process audit logs as required, it takes action to mitigate the failure. Audit processing failures include software/hardware errors; failures in the audit capturing mechanisms; and audit storage capacity being reached or exceeded. Responses to audit failure depend upon the nature of the failure mode.\n\nWhen availability is an overriding concern, other approved actions in response to an audit failure are as follows: \n\n1) If the failure was caused by the lack of audit record storage capacity, the operating system must continue generating audit records if possible (automatically restarting the audit service if necessary), overwriting the oldest audit records in a first-in-first-out manner.\n\n2) If audit records are sent to a centralized collection server and communication with this server is lost or the server fails, the operating system must queue audit records locally until communication is restored or until the audit records are retrieved manually. Upon restoration of the connection to the centralized collection server, action should be taken to synchronize the local audit data with the collection server.","checkContent":"Verify that AlmaLinux OS 9 takes the appropriate action when an audit processing failure occurs due to a disk error, with the following command:\n\n$ grep disk_error_action /etc/audit/auditd.conf\n\ndisk_error_action = HALT\n\nIf the value of the \"disk_error_action\" option is not \"SYSLOG\", \"SINGLE\", or \"HALT\", is commented out, or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to shut down by default upon audit failure (unless availability is an overriding concern). \n \nAdd or update the following line (\"disk_error_action\" can be set to \"HALT\" or \"SINGLE\" depending on configuration) in the \"/etc/audit/auditd.conf\" file: \n \ndisk_error_action = HALT \n \nIf availability has been determined to be more important, and this decision is documented with the information system security officer (ISSO), configure AlmaLinux OS 9 to notify system administration staff and ISSO staff in the event of an audit processing failure by setting the \"disk_error_action\" to \"SYSLOG\".","ccis":["CCI-000140"]},{"vulnId":"V-269526","ruleId":"SV-269526r1050409_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit system must take appropriate action when the audit storage volume is full.","description":"It is critical that when the operating system is at risk of failing to process audit logs as required, it takes action to mitigate the failure. Audit processing failures include software/hardware errors; failures in the audit capturing mechanisms; and audit storage capacity being reached or exceeded. Responses to audit failure depend upon the nature of the failure mode.\n\nWhen availability is an overriding concern, other approved actions in response to an audit failure are as follows: \n\n1) If the failure was caused by the lack of audit record storage capacity, the operating system must continue generating audit records if possible (automatically restarting the audit service if necessary), overwriting the oldest audit records in a first-in-first-out manner.\n\n2) If audit records are sent to a centralized collection server and communication with this server is lost or the server fails, the operating system must queue audit records locally until communication is restored or until the audit records are retrieved manually. Upon restoration of the connection to the centralized collection server, action should be taken to synchronize the local audit data with the collection server.","checkContent":"Verify that AlmaLinux OS 9 takes the appropriate action when the audit storage volume is full, with the following command:\n\n$ grep disk_full_action /etc/audit/auditd.conf\n\ndisk_full_action = HALT\n\nIf the value of the \"disk_full_action\" option is not \"SYSLOG\", \"SINGLE\", or \"HALT\", is commented out, or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to shut down by default upon audit failure (unless availability is an overriding concern). \n \nAdd or update the following line (\"disk_full_action\" can be set to \"HALT\" or \"SINGLE\" depending on configuration) in the \"/etc/audit/auditd.conf\" file: \n \ndisk_full_action = HALT \n \nIf availability has been determined to be more important, and this decision is documented with the information system security officer (ISSO), configure AlmaLinux OS 9 to notify system administration staff and ISSO staff in the event of an audit processing failure by setting the \"disk_full_action\" to \"SYSLOG\".","ccis":["CCI-000140"]},{"vulnId":"V-269527","ruleId":"SV-269527r1050410_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must take appropriate action when a critical audit processing failure occurs.","description":"It is critical that when the operating system is at risk of failing to process audit logs as required, it takes action to mitigate the failure. Audit processing failures include software/hardware errors; failures in the audit capturing mechanisms; and audit storage capacity being reached or exceeded. Responses to audit failure depend upon the nature of the failure mode.\n\nWhen availability is an overriding concern, other approved actions in response to an audit failure are as follows: \n\n1) If the failure was caused by the lack of audit record storage capacity, the operating system must continue generating audit records if possible (automatically restarting the audit service if necessary), overwriting the oldest audit records in a first-in-first-out manner.\n\n2) If audit records are sent to a centralized collection server and communication with this server is lost or the server fails, the operating system must queue audit records locally until communication is restored or until the audit records are retrieved manually. Upon restoration of the connection to the centralized collection server, action should be taken to synchronize the local audit data with the collection server.","checkContent":"Verify the auditd service is configured to panic on a critical error with the following command:\n\n$ auditctl -s\n\nfailure 2\n\nA number of parameters will display. If the value for \"failure\" is not \"2\", and availability is not documented as an overriding concern, this is a finding.","fixText":"Configure AlmaLinux OS 9 to halt the system when auditing failures occur.\n\nAdd the following line to the /etc/audit/audit.rules file:\n\n-f 2\n\nReload the audit rules with the following command:\n\nauditctl -R /etc/audit/audit.rules","ccis":["CCI-000140"]},{"vulnId":"V-269528","ruleId":"SV-269528r1050411_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit system must make full use of the audit storage space.","description":"max_log_file (size in megabytes) multiplied by num_logs must make full use of the auditd storage volume (separate to the root partition).\n\nIf max_log_file_action is set to ROTATE or KEEP_LOGS then max_log_file must be set to a value that makes the most use of the storage available.","checkContent":"Verify that AlmaLinux OS 9 is configured to make full use of the auditd storage volume when rotation is enabled, with the following command:\n\n$ grep max_log_file /etc/audit/auditd.conf\n\nmax_log_file = 8\n\nIf the value of the \"max_log_file\" option is not sufficiently large to maximize the use of the storage volume, is commented out, or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to make full use of the auditd storage volume with rotation enabled.\n \nAdd or update the following line in the \"/etc/audit/auditd.conf\" file to a value large enough to make efficient use of the auditd storage volume:\n \nmax_log_file = 100","ccis":["CCI-000140"]},{"vulnId":"V-269529","ruleId":"SV-269529r1050412_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit system must take appropriate action when the audit files have reached maximum size.","description":"It is critical that when the operating system is at risk of failing to process audit logs as required, it takes action to mitigate the failure. Audit processing failures include software/hardware errors; failures in the audit capturing mechanisms; and audit storage capacity being reached or exceeded. Responses to audit failure depend upon the nature of the failure mode.\n\nWhen availability is an overriding concern, other approved actions in response to an audit failure are as follows: \n\n1) If the failure was caused by the lack of audit record storage capacity, the operating system must continue generating audit records if possible (automatically restarting the audit service if necessary), overwriting the oldest audit records in a first-in-first-out manner.\n\n2) If audit records are sent to a centralized collection server and communication with this server is lost or the server fails, the operating system must queue audit records locally until communication is restored or until the audit records are retrieved manually. Upon restoration of the connection to the centralized collection server, action should be taken to synchronize the local audit data with the collection server.","checkContent":"Verify that AlmaLinux OS 9 takes the appropriate action when the audit files have reached maximum size, with the following command:\n\n$ grep max_log_file_action /etc/audit/auditd.conf\n\nmax_log_file_action = ROTATE\n\nIf the value of the \"max_log_file_action\" option is not \"ROTATE\", \"KEEP_LOGS\", is commented out, or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to rotate the audit log when it reaches maximum size.\n \nAdd or update the following line (\"max_log_file_action\" can be set to \"ROTATE\" or \"KEEP_LOGS\" depending on configuration) in the \"/etc/audit/auditd.conf\" file:\n \nmax_log_file_action = ROTATE","ccis":["CCI-000140"]},{"vulnId":"V-269530","ruleId":"SV-269530r1050413_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit system must retain an optimal number of audit records.","description":"max_log_file (size in megabytes) multiplied by num_logs must make full use of the auditd storage volume (separate to the root partition).\n\nIf max_log_file_action is set to ROTATE or KEEP_LOGS then num_logs must be set to a value between 2 and 99.","checkContent":"Verify that AlmaLinux OS 9 is configured to make full use of the auditd storage volume when rotation is enabled, with the following command:\n\n$ grep num_logs /etc/audit/auditd.conf\n\nnum_logs = 5\n\nIf the value of the \"num_logs\" option is not between 2 and 99, is commented out, or is missing, this is a finding.","fixText":"Configure AlmaLinux OS 9 to make full use of the auditd storage volume with rotation enabled.\n \nAdd or update the following line (\"num_logs\" can be set to a number between 2 and 99) in the \"/etc/audit/auditd.conf\" file:\n \nnum_logs = 5","ccis":["CCI-000140"]},{"vulnId":"V-269531","ruleId":"SV-269531r1050414_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must periodically flush audit records to disk to prevent the loss of audit records.","description":"If option \"freq\" is not set to a value that requires audit records being written to disk after a threshold number is reached, then audit records may be lost.","checkContent":"Verify that audit system is configured to flush to disk after every 100 records with the following command:\n\n$ grep freq /etc/audit/auditd.conf \n\nfreq = 100 \n\nIf \"freq\" is not set to a value between \"1\" and \"100\", the value is missing, or the line is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to flush audit to disk by adding or updating the following rule in \"/etc/audit/auditd.conf\":\n\nfreq = 100\n\nThe audit daemon must be restarted for the changes to take effect.","ccis":["CCI-000154"]},{"vulnId":"V-269532","ruleId":"SV-269532r1050415_rule","severity":"medium","ruleTitle":"The auditd service must be enabled on AlmaLinux OS 9.","description":"Without establishing what type of events occurred, the source of events, where events occurred, and the outcome of events, it would be difficult to establish, correlate, and investigate the events leading up to an outage or attack.\n\nAudit record content that may be necessary to satisfy this requirement includes, for example, time stamps, source and destination addresses, user/process identifiers, event descriptions, success/fail indications, filenames involved, and access control or flow control rules invoked.\n\nAssociating event types with detected events in audit logs provides a means of investigating an attack, recognizing resource usage or capacity thresholds, or identifying an improperly configured AlmaLinux OS 9 system.\n\nSatisfies: SRG-OS-000042-GPOS-00021, SRG-OS-000051-GPOS-00024, SRG-OS-000392-GPOS-00172, SRG-OS-000122-GPOS-00063, SRG-OS-000473-GPOS-00218, SRG-OS-000472-GPOS-00217, SRG-OS-000474-GPOS-00219, SRG-OS-000365-GPOS-00152, SRG-OS-000358-GPOS-00145, SRG-OS-000348-GPOS-00136, SRG-OS-000349-GPOS-00137, SRG-OS-000350-GPOS-00138, SRG-OS-000351-GPOS-00139, SRG-OS-000352-GPOS-00140, SRG-OS-000353-GPOS-00141, SRG-OS-000354-GPOS-00142, SRG-OS-000337-GPOS-00129, SRG-OS-000062-GPOS-00031, SRG-OS-000054-GPOS-00025","checkContent":"Verify that the auditd service is enabled with the following command:\n\n$ systemctl status auditd.service\n\nauditd.service - Security Auditing Service\n     Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; preset: enabled)\n     Active: active (running) since Fri 2024-01-05 14:04:30 UTC; 10min ago\n     \nIf the audit service is not \"active\" and \"running\", this is a finding.","fixText":"To enable the auditd service run the following command:\n\n$ systemctl enable --now auditd","ccis":["CCI-000135","CCI-000154","CCI-002884","CCI-001876","CCI-000172","CCI-003938","CCI-001889","CCI-001875","CCI-001877","CCI-001878","CCI-001879","CCI-001880","CCI-001881","CCI-001882","CCI-001914","CCI-000169","CCI-000158"]},{"vulnId":"V-269533","ruleId":"SV-269533r1050416_rule","severity":"medium","ruleTitle":"The chronyd service must be enabled.","description":"Inaccurate time stamps make it more difficult to correlate events and can lead to an inaccurate analysis. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events. Sources outside the configured acceptable allowance (drift) may be inaccurate.\n\nSynchronizing internal information system clocks provides uniformity of time stamps for information systems with multiple system clocks and systems connected over a network.\n\nOrganizations should consider endpoints that may not have regular access to the authoritative time server (e.g., mobile, teleworking, and tactical endpoints).\n\nSatisfies: SRG-OS-000355-GPOS-00143, SRG-OS-000359-GPOS-00146","checkContent":"Verify the chronyd service is active with the following command:\n\n$ systemctl is-active chronyd\n\nactive \n\nIf the chronyd service is not active, this is a finding.","fixText":"To enable the chronyd service run the following command:\n\n$ systemctl enable --now chronyd","ccis":["CCI-004923","CCI-001890"]},{"vulnId":"V-269534","ruleId":"SV-269534r1050417_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the chrony package installed.","description":"Inaccurate time stamps make it more difficult to correlate events and can lead to an inaccurate analysis. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events. Sources outside the configured acceptable allowance (drift) may be inaccurate.\n\nSynchronizing internal information system clocks provides uniformity of time stamps for information systems with multiple system clocks and systems connected over a network.\n\nOrganizations should consider endpoints that may not have regular access to the authoritative time server (e.g., mobile, teleworking, and tactical endpoints).\n\nSatisfies: SRG-OS-000355-GPOS-00143, SRG-OS-000359-GPOS-00146","checkContent":"Verify that AlmaLinux OS 9 has the chrony package installed with the following command:\n\n$ dnf list --installed chrony\n\nInstalled Packages\nchrony.x86_64         4.3-1.el9        @anaconda  \n\nIf the \"chrony\" package is not installed, this is a finding.","fixText":"The chrony package can be installed with the following command:\n \n$ dnf install chrony","ccis":["CCI-004923","CCI-001890"]},{"vulnId":"V-269535","ruleId":"SV-269535r1050418_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must securely compare internal information system clocks at least every 24 hours.","description":"Inaccurate time stamps make it more difficult to correlate events and can lead to an inaccurate analysis. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events.\n\nSynchronizing internal information system clocks provides uniformity of time stamps for information systems with multiple system clocks and systems connected over a network. Organizations should consider setting time periods for different types of systems (e.g., financial, legal, or mission-critical systems).\n\nOrganizations should also consider endpoints that may not have regular access to the authoritative time server (e.g., mobile, teleworking, and tactical endpoints). This requirement is related to the comparison done every 24 hours in SRG-OS-000355 because a comparison must be done to determine the time difference.\n\nSatisfies: SRG-OS-000356-GPOS-00144, SRG-OS-000359-GPOS-00146, SRG-OS-000785-GPOS-00250","checkContent":"Verify AlmaLinux OS 9 is securely comparing internal information system clocks at least every 24 hours with an NTP server with the following commands:\n\n$ grep maxpoll /etc/chrony.conf\n\nserver 0.us.pool.ntp.mil iburst maxpoll 16\n\nIf the \"maxpoll\" option is set to a number greater than 16 or the line is commented out, this is a finding.\n\nVerify the \"chrony.conf\" file is configured to an authoritative DOD time source by running the following command:\n\n$ grep -i server /etc/chrony.conf\n\nserver 0.us.pool.ntp.mil \n\nIf the parameter \"server\" is not set or is not set to an authoritative DOD time source, this is a finding.","fixText":"Configure AlmaLinux OS 9 to securely compare internal information system clocks at least every 24 hours with an NTP server by adding/modifying the following line in the /etc/chrony.conf file.\n\nserver <ntp.server.name> iburst maxpoll 16","ccis":["CCI-004926","CCI-001890","CCI-004922"]},{"vulnId":"V-269536","ruleId":"SV-269536r1050419_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit log directory must be owned by root to prevent unauthorized read access.","description":"Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality.\n\nAudit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit operating system activity.\n\nSatisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000059-GPOS-00029","checkContent":"Verify the audit log directory is owned by \"root\".\n\nFirst determine where the audit logs are stored with the following command:\n\n$ grep -w log_file /etc/audit/auditd.conf\n\nlog_file = /var/log/audit/audit.log\n\nThen using the location of the audit log file, determine if the audit log is owned by the \"root\" user and group using the following command:\n\n$ stat -c \"%U:%G %n\" /var/log/audit\n\nroot:root /var/log/audit\n\nIf the audit log directory is not owned by \"root:root\", this is a finding.","fixText":"Change the audit directory to be owned by the root user and group:\n\n$ chown root:root /var/log/audit","ccis":["CCI-000162","CCI-000164"]},{"vulnId":"V-269537","ruleId":"SV-269537r1050420_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit log directory must have 0700 permissions to prevent unauthorized read access.","description":"Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality.\n\nAudit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit operating system activity.\n\nSatisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000059-GPOS-00029","checkContent":"Verify the audit log directory has 0700 (u=rwx) permissions.\n\nFirst determine where the audit logs are stored with the following command:\n\n$ grep -w log_file /etc/audit/auditd.conf\n\nlog_file = /var/log/audit/audit.log\n\nThen using the location of the audit log file, determine if the audit log directory has 0700 permissions using the following command:\n\n$ stat -c \"%U:%G %#a %n\" /var/log/audit\n\nroot:root 0700 /var/log/audit\n\nIf the audit log directory does not have 0700 permissions, this is a finding.","fixText":"Change the audit directory to have 0700 permissions:\n\n$ chmod 0700 /var/log/audit","ccis":["CCI-000162","CCI-000164"]},{"vulnId":"V-269538","ruleId":"SV-269538r1050421_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit logs must be owned by the root group to prevent unauthorized read access.","description":"Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality.\n\nAudit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit operating system activity.\n\nSatisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000059-GPOS-00029","checkContent":"Verify the audit logs are owned by the \"root\" group.\n\nFirst determine if a group other than \"root\" has been assigned to the audit logs with the following command:\n\n$ grep log_group /etc/audit/auditd.conf\n\nlog_group = root\n\nThen determine where the audit logs are stored with the following command:\n\n$ grep -w log_file /etc/audit/auditd.conf\n\nlog_file = /var/log/audit/audit.log\n\nThen using the location of the audit log file, determine if the audit log is owned by the \"root\" group using the following command:\n\n$ stat -c \"%G\" /var/log/audit/audit.log\n\nroot\n\nIf the audit log is not owned by the \"root\" group, or log_group is not set to \"root\", this is a finding.","fixText":"Change the audit logs to be owned by the root group:\n\n$ chgrp root /var/log/audit/audit.log\n\nThen set the group to root in /etc/audit/auditd.conf by adding or updating the following line:\n\nlog_group = root","ccis":["CCI-000162","CCI-000164"]},{"vulnId":"V-269539","ruleId":"SV-269539r1050422_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit logs must be owned by root to prevent unauthorized read access.","description":"Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality.\n\nAudit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit operating system activity.\n\nSatisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000059-GPOS-00029","checkContent":"Verify the audit logs are owned by the \"root\" user.\n\nFirst determine where the audit logs are stored with the following command:\n\n$ grep -w log_file /etc/audit/auditd.conf\n\nlog_file = /var/log/audit/audit.log\n\nThen using the location of the audit log file, determine if the audit log is owned by the \"root\" user using the following command:\n\n$ stat -c \"%U\" /var/log/audit/audit.log\n\nroot\n\nIf the audit log is not owned by the \"root\" user this is a finding.","fixText":"Change the audit logs to be owned by the root user:\n\n$ chown root /var/log/audit/*","ccis":["CCI-000162","CCI-000164"]},{"vulnId":"V-269540","ruleId":"SV-269540r1050423_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit logs must have 0600 permissions to prevent unauthorized read access.","description":"Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality.\n\nAudit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit operating system activity.\n\nSatisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000059-GPOS-00029","checkContent":"Verify the audit log files have 0600 (u=rw-) permissions.\n\nFirst determine where the audit logs are stored with the following command:\n\n$ grep -w log_file /etc/audit/auditd.conf\n\nlog_file = /var/log/audit/audit.log\n\nThen using the location of the audit log file, determine if the audit logs have 0600 permissions using the following command:\n\n$ stat -c \"%U:%G %#a %n\" /var/log/audit/*\n\nroot:root 0600 /var/log/audit/audit.log\n\nIf the audit log files do not have 0600 permissions, this is a finding.","fixText":"Change the audit logs to have 0600 permissions:\n\n$ chmod 0600 /var/log/audit/*","ccis":["CCI-000162","CCI-000164"]},{"vulnId":"V-269541","ruleId":"SV-269541r1050424_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit tools must be group-owned by root.","description":"Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information.\n\nAlmaLinux OS 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.\n\nAudit tools include, but are not limited to, vendor-provided and open source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators.","checkContent":"Verify the audit tools are group owned by \"root\" with the following command:\n\n$ stat -c \"%G %n\" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/rsyslogd /sbin/augenrules\n\nroot /sbin/auditctl\nroot /sbin/aureport\nroot /sbin/ausearch\nroot /sbin/autrace\nroot /sbin/auditd\nroot /sbin/rsyslogd\nroot /sbin/augenrules\n\nIf any audit tools do not have a group owner of \"root\", this is a finding.","fixText":"Configure the audit tools to be group-owned by \"root\" by running the following command:\n\n$ chgrp root [audit_tool]\n\nReplace \"[audit_tool]\" with each audit tool not group-owned by \"root\".","ccis":["CCI-001493"]},{"vulnId":"V-269542","ruleId":"SV-269542r1050425_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit tools must be owned by root.","description":"Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information.\n\nAlmaLinux OS 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.\n\nAudit tools include, but are not limited to, vendor-provided and open source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators.\n\nSatisfies: SRG-OS-000256-GPOS-00097, SRG-OS-000258-GPOS-00099","checkContent":"Verify the audit tools are owned by \"root\" with the following command:\n\n$ stat -c \"%U %n\" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/rsyslogd /sbin/augenrules\n\nroot /sbin/auditctl\nroot /sbin/aureport\nroot /sbin/ausearch\nroot /sbin/autrace\nroot /sbin/auditd\nroot /sbin/rsyslogd\nroot /sbin/augenrules\n\nIf any audit tools do not have an owner of \"root\", this is a finding.","fixText":"Configure the audit tools to be owned by \"root\" by running the following command:\n\n$ chown root [audit_tool]\n\nReplace \"[audit_tool]\" with each audit tool not owned by \"root\".","ccis":["CCI-001493","CCI-001495"]},{"vulnId":"V-269543","ruleId":"SV-269543r1050426_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit tools must have a mode of 0755 or less permissive.","description":"Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information.\n\nAlmaLinux OS 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.\n\nAudit tools include, but are not limited to, vendor-provided and open source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators.\n\nSatisfies: SRG-OS-000256-GPOS-00097, SRG-OS-000258-GPOS-00099","checkContent":"Verify the audit tools have a mode of \"0755\" or less with the following command:\n\n$ stat -c \"%#a %n\" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/rsyslogd /sbin/augenrules\n\n0755 /sbin/auditctl\n0755 /sbin/aureport\n0755 /sbin/ausearch\n0750 /sbin/autrace\n0755 /sbin/auditd\n0755 /sbin/rsyslogd\n0755 /sbin/augenrules\n\nIf any of the audit tool files have a mode more permissive than \"0755\", this is a finding.","fixText":"Configure the audit tools to have a mode of \"0755\" by running the following command:\n\n$ chmod 0755 [audit_tool]\n\nReplace \"[audit_tool]\" with each audit tool that has a more permissive mode than 0755.","ccis":["CCI-001493","CCI-001495"]},{"vulnId":"V-269544","ruleId":"SV-269544r1050427_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit system must protect logon UIDs from unauthorized change.","description":"If modification of login user identifiers (UIDs) is not prevented, they can be changed by nonprivileged users and make auditing complicated or impossible.","checkContent":"Verify the audit system prevents unauthorized changes to logon UIDs with the following command:\n\n$ grep immutable /etc/audit/audit.rules\n\n--loginuid-immutable\n\nIf the \"--loginuid-immutable\" option is not returned in the \"/etc/audit/audit.rules\", or the line is commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 auditing to prevent modification of login UIDs once they are set by adding the following line to /etc/audit/rules.d/audit.rules:\n\n--loginuid-immutable","ccis":["CCI-000163"]},{"vulnId":"V-269545","ruleId":"SV-269545r1050428_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must use cryptographic mechanisms to protect the integrity of audit tools.","description":"Protecting the integrity of the tools used for auditing purposes is a critical step toward ensuring the integrity of audit information. Audit information includes all information (e.g., audit records, audit settings, and audit reports) needed to successfully audit information system activity.\n\nSatisfies: SRG-OS-000278-GPOS-00108, SRG-OS-000257-GPOS-00098","checkContent":"Check that AIDE is properly configured to use cryptographic mechanisms to protect the integrity of the audit tools with the following command:\n\n$ grep /usr/sbin/au /etc/aide.conf\n \n/usr/sbin/auditctl p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/auditd p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/autrace p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/augenrules p+i+n+u+g+s+b+acl+xattrs+sha512\n\nIf AIDE is not installed, ask the system administrator (SA) how file integrity checks are performed on the system.\n\nIf any of the audit tools listed above do not have a corresponding line including \"sha512\", ask the SA to indicate what cryptographic mechanisms are being used to protect the integrity of the audit tools. If there is no evidence of integrity protection, this is a finding.","fixText":"Add or update the following lines to \"/etc/aide.conf\", to protect the integrity of the audit tools:\n \n/usr/sbin/auditctl p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/auditd p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/ausearch p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/aureport p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/autrace p+i+n+u+g+s+b+acl+xattrs+sha512\n/usr/sbin/augenrules p+i+n+u+g+s+b+acl+xattrs+sha512","ccis":["CCI-001496","CCI-001494"]},{"vulnId":"V-269546","ruleId":"SV-269546r1050429_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 audit system must protect auditing rules from unauthorized change.","description":"Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality.\n\nAudit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit AlmaLinux OS 9 system activity.\n\nIn immutable mode, unauthorized users cannot execute changes to the audit system to potentially hide malicious activity and then put the audit rules back. A system reboot would be noticeable, and a system administrator could then investigate the unauthorized changes.","checkContent":"Verify the audit system prevents unauthorized changes to the rules with the following command:\n\n$ grep -E '^-e 2' /etc/audit/audit.rules\n\n-e 2\n\nIf the audit system is not set to be immutable by adding the \"-e 2\" option to the end of \"/etc/audit/audit.rules\", this is a finding.","fixText":"Configure the audit system to set the audit rules to be immutable by adding the following line to the end of \"/etc/audit/rules.d/audit.rules\"\n\n-e 2","ccis":["CCI-000163"]},{"vulnId":"V-272485","ruleId":"SV-272485r1155265_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9 must have the postfix package installed.","description":"Postfix is a free, open-source mail transfer agent (MTA) that sends and receives emails. It is a server-side application that can be used to set up a local mail server, create a null-client mail relay, use a Postfix server as a destination for multiple domains, or choose an LDAP directory instead of files for lookups. Postfix supports protocols like LDAP, SMTP AUTH (SASL), and TLS. It uses the Simple Mail Transfer Protocol (SMTP) to transfer emails between servers.\n\nSatisfies: SRG-OS-000304-GPOS-00121, SRG-OS-000343-GPOS-00134, SRG-OS-000363-GPOS-00150, SRG-OS-000447-GPOS-00201","checkContent":"Note: If the admin can demonstrate that there is another system/service to send audit failure notifications to the administrator/ISSO, this control is not applicable.\n\nVerify AlmaLinux OS 9 has the postfix package installed with the following command:\n\n$ dnf list --installed postfix\n\nExample output:\n\npostfix.x86_64                                       2:3.5.9-24.el9                                        @AppStream\n\nIf the \"postfix\" package is not installed, this is a finding.","fixText":"Install the postfix package with the following command:\n \n$ sudo dnf install postfix","ccis":["CCI-000015"]},{"vulnId":"V-274874","ruleId":"SV-274874r1101856_rule","severity":"medium","ruleTitle":"AlmaLinux OS 9  must audit any script or executable called by cron as root or by any privileged user.","description":"Any script or executable called by cron as root or by any privileged user must be owned by that user and must have the permissions 755 or more restrictive and should have no extended rights that allow any nonprivileged user to modify the script or executable.","checkContent":"Verify that AlmaLinux OS 9 is configured to audit the execution of any system call made by cron as root or as any privileged user.\n\n$ sudo auditctl -l | grep /etc/cron.d\n-w /etc/cron.d -p wa -k cronjobs\n\n$ sudo auditctl -l | grep /var/spool/cron\n-w /var/spool/cron -p wa -k cronjobs\n\nIf either of these commands do not return the expected output, or the lines are commented out, this is a finding.","fixText":"Configure AlmaLinux OS 9 to audit the execution of any system call made by cron as root or as any privileged user.\n\nAdd or update the following file system rules to \"/etc/audit/rules.d/audit.rules\":\nauditctl -w /etc/cron.d/ -p wa -k cronjobs\nauditctl -w /var/spool/cron/ -p wa -k cronjobs\n\nTo load the rules to the kernel immediately, use the following command:\n\n$ sudo augenrules --load","ccis":["CCI-000172"]},{"vulnId":"V-283453","ruleId":"SV-283453r1188503_rule","severity":"high","ruleTitle":"AlmaLinux 9 cryptographic policy must not be overridden.","description":"Centralized cryptographic policies simplify applying secure ciphers across an operating system and the applications that run on that operating system. Use of weak or untested encryption algorithms undermines the purposes of using encryption to protect data.\n\nSatisfies: SRG-OS-000396-GPOS-00176, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174","checkContent":"Verify that AlmaLinux 9 cryptographic policies are not overridden.\n\nVerify that the configured policy matches the generated policy with the following command:\n\n$ sudo update-crypto-policies --check\n\nThe configured policy matches the generated policy\n\nIf the returned message does not match the above, but instead matches the following, this is a finding:\n\nThe configured policy does NOT match the generated policy\n\nList all of the crypto backends configured on the system with the following command:\n\n$ ls -l /etc/crypto-policies/back-ends/ \n\nlrwxrwxrwx. 1 root root  40 Nov 13 16:29 bind.config -> /usr/share/crypto-policies/FIPS/bind.txt\nlrwxrwxrwx. 1 root root  42 Nov 13 16:29 gnutls.config -> /usr/share/crypto-policies/FIPS/gnutls.txt\nlrwxrwxrwx. 1 root root  40 Nov 13 16:29 java.config -> /usr/share/crypto-policies/FIPS/java.txt\nlrwxrwxrwx. 1 root root  46 Nov 13 16:29 javasystem.config -> /usr/share/crypto-policies/FIPS/javasystem.txt\nlrwxrwxrwx. 1 root root  40 Nov 13 16:29 krb5.config -> /usr/share/crypto-policies/FIPS/krb5.txt\nlrwxrwxrwx. 1 root root  45 Nov 13 16:29 libreswan.config -> /usr/share/crypto-policies/FIPS/libreswan.txt\nlrwxrwxrwx. 1 root root  42 Nov 13 16:29 libssh.config -> /usr/share/crypto-policies/FIPS/libssh.txt\n-rw-r--r--. 1 root root 398 Nov 13 16:29 nss.config\nlrwxrwxrwx. 1 root root  43 Nov 13 16:29 openssh.config -> /usr/share/crypto-policies/FIPS/openssh.txt\nlrwxrwxrwx. 1 root root  49 Nov 13 16:29 opensshserver.config -> /usr/share/crypto-policies/FIPS/opensshserver.txt\nlrwxrwxrwx. 1 root root  46 Nov 13 16:29 opensslcnf.config -> /usr/share/crypto-policies/FIPS/opensslcnf.txt\nlrwxrwxrwx. 1 root root  43 Nov 13 16:29 openssl.config -> /usr/share/crypto-policies/FIPS/openssl.txt\nlrwxrwxrwx. 1 root root  48 Nov 13 16:29 openssl_fips.config -> /usr/share/crypto-policies/FIPS/openssl_fips.txt\n\nIf the paths do not point to the respective files under /usr/share/crypto-policies/FIPS path, this is a finding.\n\nNote: nss.config should not be symlinked.\n\nNote: If there is an operational need to use a subpolicy that causes the links to the crypto backends to break, this is a finding, and exceptions will need to be made by the authorizing official (AO) and documented with the information system security officer (ISSO).","fixText":"Configure AlmaLinux 9 to correctly implement the systemwide cryptographic policies by reinstalling the crypto-policies package contents.\n\nReinstall crypto-policies with the following command:\n\n$ sudo dnf -y reinstall crypto-policies\n\nSet the crypto-policy to FIPS with the following command:\n\n$ sudo update-crypto-policies --set FIPS\n\nSetting system policy to FIPS","ccis":["CCI-002450"]},{"vulnId":"V-283454","ruleId":"SV-283454r1188506_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must have the crypto-policies package installed.","description":"Centralized cryptographic policies simplify applying secure ciphers across an operating system and the applications that run on that operating system. Use of weak or untested encryption algorithms undermines the purposes of using encryption to protect data.\n\nSatisfies: SRG-OS-000394-GPOS-00174, SRG-OS-000393-GPOS-00173","checkContent":"Verify that the AlmaLinux OS 9 crypto-policies package is installed with the following command:\n\n$ dnf list --installed crypto-policies\n\nInstalled Packages\ncrypto-policies.noarch       20221215-1.git9a18988.el9    @anaconda\n\nIf the \"crypto-policies\" package is not installed, this is a finding.","fixText":"Install the crypto-policies package  with the following command:\n\n$ dnf install crypto-policies","ccis":["CCI-003123","CCI-002890","CCI-002450"]},{"vulnId":"V-283455","ruleId":"SV-283455r1188509_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must implement a FIPS 140-3-compliant systemwide cryptographic policy.","description":"Centralized cryptographic policies simplify applying secure ciphers across an operating system and the applications that run on that operating system. Use of weak or untested encryption algorithms undermines the purposes of using encryption to protect data.\n\nSatisfies: SRG-OS-000396-GPOS-00176, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174","checkContent":"Verify AlmaLinux OS 9 is set to use a FIPS 140-3-compliant systemwide cryptographic policy with the following command:\n\n$ update-crypto-policies --show\n\nFIPS\n\nIf the systemwide crypto policy is not set to \"FIPS\", this is a finding.\n\nNote: If subpolicies have been configured, they could be listed in a colon-separated list starting with \"FIPS\" as follows FIPS:<SUBPOLICY-NAME>. This is not a finding.\n\nNote: Subpolicies like AD-SUPPORT should be configured according to the latest guidance from the operating system vendor.\n\nVerify the current minimum crypto-policy configuration with the following commands:\n\n$ grep -E 'rsa_size|hash' /etc/crypto-policies/state/CURRENT.pol\n\nhash = SHA2-256 SHA2-384 SHA2-512 SHA2-224 SHA3-256 SHA3-384 SHA3-512 SHAKE-256\nmin_rsa_size = 2048\n\nIf the \"hash\" values do not include at least the following FIPS 140-3-compliant algorithms \"SHA2-256 SHA2-384 SHA2-512 SHA2-224 SHA3-256 SHA3-384 SHA3-512 SHAKE-256\", this is a finding.\n\nIf there are algorithms that include \"SHA1\" or a hash value less than \"224\" this is a finding.\n\nIf the \"min_rsa_size\" is not set to a value of at least 2048, this is a finding.\n\nIf these commands do not return any output, this is a finding.","fixText":"Configure AlmaLinux OS 9 to use a FIPS 140-3-compliant systemwide cryptographic policy.\n\nCreate a subpolicy for enhancements to the base systemwide crypto-policy by creating the file /etc/crypto-policies/policies/modules/STIG.pmod with the following content:\n\n# Define ciphers and MACs for OpenSSH and libssh\ncipher@SSH=AES-256-GCM AES-256-CTR AES-128-GCM AES-128-CTR\nmac@SSH=HMAC-SHA2-512 HMAC-SHA2-256\n\nApply the policy enhancements to the FIPS systemwide cryptographic policy level with the following command:\n\n$ sudo update-crypto-policies --set FIPS:STIG\n\nNote: If additional subpolicies are being employed, they should be added to the update-crypto-policies command.\n\nTo make the cryptographic settings effective for already running services and applications, restart the system:\n\n$ sudo reboot","ccis":["CCI-003123","CCI-002450"]},{"vulnId":"V-283456","ruleId":"SV-283456r1188512_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must implement DOD-approved encryption in the bind package.","description":"Without cryptographic integrity protections, information can be altered by unauthorized users without detection.\n\nCryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions using asymmetric cryptography enabling distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.\n\nAlmaLinux OS 9 incorporates systemwide crypto policies by default. The employed algorithms can be viewed in the /etc/crypto-policies/back-ends/ directory.","checkContent":"Note: If the \"bind\" package is not installed, this requirement is Not Applicable.\n\nVerify that BIND uses the system crypto policy with the following command:\n\n$ grep include /etc/named.conf \n\ninclude \"/etc/crypto-policies/back-ends/bind.config\";\n\nIf BIND is installed and the BIND config file does not contain the \"/etc/crypto-policies/back-ends/bind.config\" directive, or the line is commented out, this is a finding.","fixText":"Configure BIND to use the systemwide crypto policy.\n\nAdd the following line to the \"options\" section in \"/etc/named.conf\":\n\ninclude \"/etc/crypto-policies/back-ends/bind.config\";","ccis":["CCI-002422","CCI-002418"]},{"vulnId":"V-283675","ruleId":"SV-283675r1193286_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must implement DOD-approved encryption ciphers to protect the confidentiality of SSH connections.","description":"Without cryptographic integrity protections, information can be altered by unauthorized users without detection.\n\nRemote access (e.g., RDP) is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nCryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions using asymmetric cryptography enabling distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.\n\nAlmaLinux OS 9 incorporates systemwide crypto policies by default. The SSH configuration file has no effect on the ciphers, MACs, or algorithms unless specifically defined in the /etc/sysconfig/sshd file. The employed algorithms can be viewed in the /etc/crypto-policies/back-ends/opensshserver.config file.","checkContent":"Verify that systemwide crypto policies are in effect with the following command:\n\n$ sudo grep Include /etc/ssh/sshd_config  /etc/ssh/sshd_config.d/*\n\n/etc/ssh/sshd_config:Include /etc/ssh/sshd_config.d/*.conf\n/etc/ssh/sshd_config.d/50-redhat.conf:Include /etc/crypto-policies/back-ends/opensshserver.config\n\nIf \"Include /etc/ssh/sshd_config.d/*.conf\" or \"Include /etc/crypto-policies/back-ends/opensshserver.config\" are not included in the system sshd config or the file \"/etc/ssh/sshd_config.d/50-redhat.conf\" is missing, this is a finding.","fixText":"Configure the AlmaLinux OS 9 SSH daemon to use systemwide crypto policies by running the following commands:\n\n$ sudo dnf reinstall openssh-server","ccis":["CCI-001453"]},{"vulnId":"V-283676","ruleId":"SV-283676r1193289_rule","severity":"high","ruleTitle":"AlmaLinux OS 9 must implement DOD-approved encryption in the OpenSSL package.","description":"Without cryptographic integrity protections, information can be altered by unauthorized users without detection.\n\nRemote access (e.g., RDP) is access to DOD nonpublic information systems by an authorized user (or an information system) communicating through an external, nonorganization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless.\n\nCryptographic mechanisms used for protecting the integrity of information include, for example, signed hash functions using asymmetric cryptography enabling distribution of the public key to verify the hash information while maintaining the confidentiality of the secret key used to generate the hash.\n\nThe employed algorithms can be viewed in the /etc/crypto-policies/back-ends/openssl.config file.","checkContent":"Verify that AlmaLinux OS 9 OpenSSL library is configured to use only ciphers employing FIPS 140-3 approved algorithms with the following command:\n\n$ grep -i opensslcnf.config /etc/pki/tls/openssl.cnf\n\n.include = /etc/crypto-policies/back-ends/opensslcnf.config\n\nIf the \"opensslcnf.config\" is not defined in the \"/etc/pki/tls/openssl.cnf\" file, this is a finding.","fixText":"Configure the AlmaLinux OS 9 OpenSSL library to use the system cryptographic policy.\n\nEdit the \"/etc/pki/tls/openssl.cnf\" and add or modify the following line:\n\n.include = /etc/crypto-policies/back-ends/opensslcnf.config","ccis":["CCI-001453"]}]}