Red Hat Enterprise Linux 8 Security Technical Implementation Guide

  • Version/Release: V1R12
  • Published: 2023-09-11
  • Expand All:
  • Severity:
  • Sort:
Compare

Select any two versions of this STIG to compare the individual requirements

View

Select any old version/release of this STIG to view the previous requirements

This Security Technical Implementation Guide is published as a tool to improve the security of Department of Defense (DOD) information systems. The requirements are derived from the National Institute of Standards and Technology (NIST) 800-53 and related documents. Comments or proposed revisions to this document should be sent via email to the following address: [email protected].
c
RHEL 8 must be a vendor-supported release.
CM-6 - High - CCI-000366 - V-230221 - SV-230221r858734_rule
RMF Control
CM-6
Severity
High
CCI
CCI-000366
Version
RHEL-08-010000
Vuln IDs
  • V-230221
Rule IDs
  • SV-230221r858734_rule
An operating system release is considered "supported" if the vendor continues to provide security patches for the product. With an unsupported release, it will not be possible to resolve security issues discovered in the system software. Red Hat offers the Extended Update Support (EUS) add-on to a Red Hat Enterprise Linux subscription, for a fee, for those customers who wish to standardize on a specific minor release for an extended period. The RHEL 8 minor releases eligible for EUS are 8.1, 8.2, 8.4, 8.6, and 8.8. Each RHEL 8 EUS stream is available for 24 months from the availability of the minor release. RHEL 8.10 will be the final minor release overall. For more details on the Red Hat Enterprise Linux Life Cycle visit https://access.redhat.com/support/policy/updates/errata/. Note: The life-cycle time spans and dates are subject to adjustment.
Checks: C-32890r858733_chk

Verify the version of the operating system is vendor supported. Note: The lifecycle time spans and dates are subject to adjustment. Check the version of the operating system with the following command: $ sudo cat /etc/redhat-release Red Hat Enterprise Linux Server release 8.6 (Ootpa) Current End of Extended Update Support for RHEL 8.1 is 30 November 2021. Current End of Extended Update Support for RHEL 8.2 is 30 April 2022. Current End of Extended Update Support for RHEL 8.4 is 31 May 2023. Current End of Maintenance Support for RHEL 8.5 is 31 May 2022. Current End of Extended Update Support for RHEL 8.6 is 31 May 2024. Current End of Maintenance Support for RHEL 8.7 is 31 May 2023. Current End of Extended Update Support for RHEL 8.8 is 31 May 2025. Current End of Maintenance Support for RHEL 8.9 is 31 May 2024. Current End of Maintenance Support for RHEL 8.10 is 31 May 2029. If the release is not supported by the vendor, this is a finding.

Fix: F-32865r567410_fix

Upgrade to a supported version of RHEL 8.

b
RHEL 8 vendor packaged system security patches and updates must be installed and up to date.
CM-6 - Medium - CCI-000366 - V-230222 - SV-230222r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010010
Vuln IDs
  • V-230222
Rule IDs
  • SV-230222r627750_rule
Timely patching is critical for maintaining the operational availability, confidentiality, and integrity of information technology (IT) systems. However, failure to keep operating system and application software patched is a common mistake made by IT professionals. New patches are released daily, and it is often difficult for even experienced System Administrators to keep abreast of all the new patches. When new weaknesses in an operating system exist, patches are usually made available by the vendor to resolve the problems. If the most recent security patches and updates are not installed, unauthorized users may take advantage of weaknesses in the unpatched software. The lack of prompt attention to patching could result in a system compromise.
Checks: C-32891r567412_chk

Verify the operating system security patches and updates are installed and up to date. Updates are required to be applied with a frequency determined by the site or Program Management Office (PMO). Obtain the list of available package security updates from Red Hat. The URL for updates is https://rhn.redhat.com/errata/. It is important to note that updates provided by Red Hat may not be present on the system if the underlying packages are not installed. Check that the available package security updates have been installed on the system with the following command: $ sudo yum history list | more Loaded plugins: langpacks, product-id, subscription-manager ID | Command line | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 70 | install aide | 2020-03-05 10:58 | Install | 1 69 | update -y | 2020-03-04 14:34 | Update | 18 EE 68 | install vlc | 2020-02-21 17:12 | Install | 21 67 | update -y | 2020-02-21 17:04 | Update | 7 EE If package updates have not been performed on the system within the timeframe the site/program documentation requires, this is a finding. Typical update frequency may be overridden by Information Assurance Vulnerability Alert (IAVA) notifications from CYBERCOM. If the operating system is in non-compliance with the Information Assurance Vulnerability Management (IAVM) process, this is a finding.

Fix: F-32866r567413_fix

Install the operating system patches or updated packages available from Red Hat within 30 days or sooner as local policy dictates.

c
RHEL 8 must implement NIST FIPS-validated cryptography for the following: To provision digital signatures, to generate cryptographic hashes, and to protect data requiring data-at-rest protections in accordance with applicable federal laws, Executive Orders, directives, policies, regulations, and standards.
AC-17 - High - CCI-000068 - V-230223 - SV-230223r928585_rule
RMF Control
AC-17
Severity
High
CCI
CCI-000068
Version
RHEL-08-010020
Vuln IDs
  • V-230223
Rule IDs
  • SV-230223r928585_rule
Use of weak or untested encryption algorithms undermines the purposes of using encryption to protect data. The operating system must implement cryptographic modules adhering to the higher standards approved by the federal government since this provides assurance they have been tested and validated. RHEL 8 utilizes GRUB 2 as the default bootloader. Note that GRUB 2 command-line parameters are defined in the "kernelopts" variable of the /boot/grub2/grubenv file for all kernel boot entries. The command "fips-mode-setup" modifies the "kernelopts" variable, which in turn updates all kernel boot entries. The fips=1 kernel option needs to be added to the kernel command line during system installation so that key generation is done with FIPS-approved algorithms and continuous monitoring tests in place. Users must also ensure the system has plenty of entropy during the installation process by moving the mouse around, or if no mouse is available, ensuring that many keystrokes are typed. The recommended amount of keystrokes is 256 and more. Less than 256 keystrokes may generate a nonunique key. Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000125-GPOS-00065, SRG-OS-000396-GPOS-00176, SRG-OS-000423-GPOS-00187, SRG-OS-000478-GPOS-00223
Checks: C-32892r928583_chk

Verify the operating system implements DOD-approved encryption to protect the confidentiality of remote access sessions. Check to see if FIPS mode is enabled with the following command: $ fips-mode-setup --check FIPS mode is enabled If FIPS mode is "enabled", check to see if the kernel boot parameter is configured for FIPS mode with the following command: $ sudo grub2-editenv list | grep fips kernelopts=root=/dev/mapper/rhel-root ro crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet fips=1 boot=UUID=8d171156-cd61-421c-ba41-1c021ac29e82 If the kernel boot parameter is configured to use FIPS mode, check to see if the system is in FIPS mode with the following command: $ sudo cat /proc/sys/crypto/fips_enabled 1 If FIPS mode is not "on", the kernel boot parameter is not configured for FIPS mode, or the system does not have a value of "1" for "fips_enabled" in "/proc/sys/crypto", this is a finding.

Fix: F-32867r928584_fix

Configure the operating system to implement DOD-approved encryption by following the steps below: To enable strict FIPS compliance, the fips=1 kernel option needs to be added to the kernel boot parameters during system installation so key generation is done with FIPS-approved algorithms and continuous monitoring tests in place. Enable FIPS mode after installation (not strict FIPS-compliant) with the following command: $ sudo fips-mode-setup --enable Reboot the system for the changes to take effect.

b
All RHEL 8 local disk partitions must implement cryptographic mechanisms to prevent unauthorized disclosure or modification of all information that requires at rest protection.
SC-28 - Medium - CCI-001199 - V-230224 - SV-230224r917864_rule
RMF Control
SC-28
Severity
Medium
CCI
CCI-001199
Version
RHEL-08-010030
Vuln IDs
  • V-230224
Rule IDs
  • SV-230224r917864_rule
RHEL 8 systems handling data requiring "data at rest" protections must employ cryptographic mechanisms to prevent unauthorized disclosure and modification of the information at rest. Selection 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). Satisfies: SRG-OS-000185-GPOS-00079, SRG-OS-000404-GPOS-00183, SRG-OS-000405-GPOS-00184
Checks: C-32893r917863_chk

Verify RHEL 8 prevents unauthorized disclosure or modification of all information requiring at-rest protection by using disk encryption. If there is a documented and approved reason for not having data-at-rest encryption 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. Verify all system partitions are encrypted with the following command: $ sudo blkid /dev/mapper/rhel-root: UUID="67b7d7fe-de60-6fd0-befb-e6748cf97743" TYPE="crypto_LUKS" Every persistent disk partition present must be of type "crypto_LUKS". If any partitions other than the boot partition or pseudo file systems (such as /proc or /sys) 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.

Fix: F-32868r567419_fix

Configure RHEL 8 to prevent unauthorized modification of all information at rest by using disk encryption. Encrypting a partition in an already installed system is more difficult, because existing partitions will need to be resized and changed. To encrypt an entire partition, dedicate a partition for encryption in the partition layout.

b
RHEL 8 must display the Standard Mandatory DoD Notice and Consent Banner before granting local or remote access to the system via a ssh logon.
AC-8 - Medium - CCI-000048 - V-230225 - SV-230225r858694_rule
RMF Control
AC-8
Severity
Medium
CCI
CCI-000048
Version
RHEL-08-010040
Vuln IDs
  • V-230225
Rule IDs
  • SV-230225r858694_rule
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. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Use the following verbiage for operating systems that have severe limitations on the number of characters that can be displayed in the banner: "I've read & consent to terms in IS user agreem't." Satisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000228-GPOS-00088
Checks: C-32894r858693_chk

Verify any publicly accessible connection to the operating system displays the Standard Mandatory DoD Notice and Consent Banner before granting access to the system. Check for the location of the banner file being used with the following command: $ sudo grep -ir banner /etc/ssh/sshd_config* banner /etc/issue This command will return the banner keyword and the name of the file that contains the ssh banner (in this case "/etc/issue"). If the line is commented out, this is a finding. If conflicting results are returned, this is a finding. View the file specified by the banner keyword to check that it matches the text of the Standard Mandatory DoD Notice and Consent Banner: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." If the system does not display a graphical logon banner or the banner does not match the Standard Mandatory DoD Notice and Consent Banner, this is a finding. If the text in the file does not match the Standard Mandatory DoD Notice and Consent Banner, this is a finding.

Fix: F-32869r567422_fix

Configure the operating system to display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system via the ssh. Edit the "/etc/ssh/sshd_config" file to uncomment the banner keyword and configure it to point to a file that will contain the logon banner (this file may be named differently or be in a different location if using a version of SSH that is provided by a third-party vendor). An example configuration line is: banner /etc/issue Either create the file containing the banner or replace the text in the file with the Standard Mandatory DoD Notice and Consent Banner. The DoD-required text is: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." The SSH service must be restarted for changes to take effect.

b
RHEL 8 must display the Standard Mandatory DoD Notice and Consent Banner before granting local or remote access to the system via a graphical user logon.
AC-8 - Medium - CCI-000048 - V-230226 - SV-230226r743916_rule
RMF Control
AC-8
Severity
Medium
CCI
CCI-000048
Version
RHEL-08-010050
Vuln IDs
  • V-230226
Rule IDs
  • SV-230226r743916_rule
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. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Satisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000228-GPOS-00088
Checks: C-32895r743914_chk

Verify RHEL 8 displays the Standard Mandatory DoD Notice and Consent Banner before granting access to the operating system via a graphical user logon. Note: This requirement assumes the use of the RHEL 8 default graphical user interface, Gnome Shell. If the system does not have any graphical user interface installed, this requirement is Not Applicable. Check that the operating system displays the exact Standard Mandatory DoD Notice and Consent Banner text with the command: $ sudo grep banner-message-text /etc/dconf/db/local.d/* banner-message-text= 'You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n-At any time, the USG may inspect and seize data stored on this IS.\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details. ' Note: The "\n " characters are for formatting only. They will not be displayed on the graphical interface. If the banner does not match the Standard Mandatory DoD Notice and Consent Banner exactly, this is a finding.

Fix: F-32870r743915_fix

Configure the operating system to display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system. Note: If the system does not have a graphical user interface installed, this requirement is Not Applicable. Add the following lines to the [org/gnome/login-screen] section of the "/etc/dconf/db/local.d/01-banner-message": banner-message-text='You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.\n-At any time, the USG may inspect and seize data stored on this IS.\n-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.\n-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.\n-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details. ' Note: The "\n " characters are for formatting only. They will not be displayed on the graphical interface. Run the following command to update the database: $ sudo dconf update

b
RHEL 8 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.
AC-8 - Medium - CCI-000048 - V-230227 - SV-230227r627750_rule
RMF Control
AC-8
Severity
Medium
CCI
CCI-000048
Version
RHEL-08-010060
Vuln IDs
  • V-230227
Rule IDs
  • SV-230227r627750_rule
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. System use notifications are required only for access via logon interfaces with human users and are not required when such human interfaces do not exist. The banner must be formatted in accordance with applicable DoD policy. Use the following verbiage for operating systems that can accommodate banners of 1300 characters: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details." Satisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000228-GPOS-00088
Checks: C-32896r567427_chk

Verify RHEL 8 displays the Standard Mandatory DoD Notice and Consent Banner before granting access to the operating system via a command line user logon. Check that RHEL 8 displays a banner at the command line login screen with the following command: $ sudo cat /etc/issue If the banner is set correctly it will return the following text: “You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.” If the banner text does not match the Standard Mandatory DoD Notice and Consent Banner exactly, this is a finding.

Fix: F-32871r567428_fix

Configure RHEL 8 to display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system via command line logon. Edit the "/etc/issue" file to replace the default text with the Standard Mandatory DoD Notice and Consent Banner. The DoD-required text is: "You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions: -The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. -At any time, the USG may inspect and seize data stored on this IS. -Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. -This IS includes security measures (e.g., authentication and access controls) to protect USG interests -- not for your personal benefit or privacy. -Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details."

b
All RHEL 8 remote access methods must be monitored.
AC-17 - Medium - CCI-000067 - V-230228 - SV-230228r627750_rule
RMF Control
AC-17
Severity
Medium
CCI
CCI-000067
Version
RHEL-08-010070
Vuln IDs
  • V-230228
Rule IDs
  • SV-230228r627750_rule
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. Remote access is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Automated monitoring of remote access sessions allows organizations to detect cyber attacks and 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).
Checks: C-32897r567430_chk

Verify that RHEL 8 monitors all remote access methods. Check that remote access methods are being logged by running the following command: $ sudo grep -E '(auth.*|authpriv.*|daemon.*)' /etc/rsyslog.conf auth.*;authpriv.*;daemon.* /var/log/secure If "auth.*", "authpriv.*" or "daemon.*" are not configured to be logged, this is a finding.

Fix: F-32872r567431_fix

Configure RHEL 8 to monitor all remote access methods by installing rsyslog with the following command: $ sudo yum install rsyslog Then add or update the following lines to the "/etc/rsyslog.conf" file: auth.*;authpriv.*;daemon.* /var/log/secure The "rsyslog" service must be restarted for the changes to take effect. To restart the "rsyslog" service, run the following command: $ sudo systemctl restart rsyslog.service

b
RHEL 8, for PKI-based authentication, must validate certificates by constructing a certification path (which includes status information) to an accepted trust anchor.
IA-5 - Medium - CCI-000185 - V-230229 - SV-230229r858739_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000185
Version
RHEL-08-010090
Vuln IDs
  • V-230229
Rule IDs
  • SV-230229r858739_rule
Without path validation, an informed trust decision by the relying party cannot be made when presented with any certificate not already explicitly trusted. A 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. When 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. This 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. Satisfies: SRG-OS-000066-GPOS-00034, SRG-OS-000384-GPOS-00167
Checks: C-32898r858738_chk

Verify RHEL 8 for PKI-based authentication has valid certificates by constructing a certification path (which includes status information) to an accepted trust anchor. Note: If the System Administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable. Check that the system has a valid DoD root CA installed with the following command: $ sudo openssl x509 -text -in /etc/sssd/pki/sssd_auth_ca_db.pem Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha256WithRSAEncryption Issuer: C = US, O = U.S. Government, OU = DoD, OU = PKI, CN = DoD Root CA 3 Validity Not Before: Mar 20 18:46:41 2012 GMT Not After : Dec 30 18:46:41 2029 GMT Subject: C = US, O = U.S. Government, OU = DoD, OU = PKI, CN = DoD Root CA 3 Subject Public Key Info: Public Key Algorithm: rsaEncryption If the root ca file is not a DoD-issued certificate with a valid date and installed in the /etc/sssd/pki/sssd_auth_ca_db.pem location, this is a finding.

Fix: F-32873r809269_fix

Configure RHEL 8, for PKI-based authentication, to validate certificates by constructing a certification path (which includes status information) to an accepted trust anchor. Obtain a valid copy of the DoD root CA file from the PKI CA certificate bundle at cyber.mil and copy into the following file: /etc/sssd/pki/sssd_auth_ca_db.pem

b
RHEL 8, for certificate-based authentication, must enforce authorized access to the corresponding private key.
IA-5 - Medium - CCI-000186 - V-230230 - SV-230230r627750_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000186
Version
RHEL-08-010100
Vuln IDs
  • V-230230
Rule IDs
  • SV-230230r627750_rule
If an unauthorized user obtains access to a private key without a passcode, that user would have unauthorized access to any system where the associated public key has been installed.
Checks: C-32899r567436_chk

Verify the SSH private key files have a passcode. For each private key stored on the system, use the following command: $ sudo ssh-keygen -y -f /path/to/file If the contents of the key are displayed, this is a finding.

Fix: F-32874r567437_fix

Create a new private and public key pair that utilizes a passcode with the following command: $ sudo ssh-keygen -n [passphrase]

b
RHEL 8 must encrypt all stored passwords with a FIPS 140-2 approved cryptographic hashing algorithm.
IA-5 - Medium - CCI-000196 - V-230231 - SV-230231r877397_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000196
Version
RHEL-08-010110
Vuln IDs
  • V-230231
Rule IDs
  • SV-230231r877397_rule
Passwords need to 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. Unapproved mechanisms that are used for authentication to the cryptographic module are not verified and therefore cannot be relied upon to provide confidentiality or integrity, and DoD data may be compromised. FIPS 140-2 is the current standard for validating that mechanisms used to access cryptographic modules utilize authentication that meets DoD requirements.
Checks: C-32900r567439_chk

Verify that the shadow password suite configuration is set to encrypt password with a FIPS 140-2 approved cryptographic hashing algorithm. Check the hashing algorithm that is being used to hash passwords with the following command: $ sudo grep -i crypt /etc/login.defs ENCRYPT_METHOD SHA512 If "ENCRYPT_METHOD" does not equal SHA512 or greater, this is a finding.

Fix: F-32875r567440_fix

Configure RHEL 8 to encrypt all stored passwords. Edit/Modify the following line in the "/etc/login.defs" file and set "[ENCRYPT_METHOD]" to SHA512. ENCRYPT_METHOD SHA512

b
RHEL 8 must employ FIPS 140-2 approved cryptographic hashing algorithms for all stored passwords.
IA-5 - Medium - CCI-000196 - V-230232 - SV-230232r877397_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000196
Version
RHEL-08-010120
Vuln IDs
  • V-230232
Rule IDs
  • SV-230232r877397_rule
The system must use a strong hashing algorithm to store the password. Passwords need to 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.
Checks: C-32901r567442_chk

Confirm that the interactive user account passwords are using a strong password hash with the following command: $ sudo cut -d: -f2 /etc/shadow $6$kcOnRq/5$NUEYPuyL.wghQwWssXRcLRFiiru7f5JPV6GaJhNC2aK5F3PZpE/BCCtwrxRc/AInKMNX3CdMw11m9STiql12f/ Password hashes "!" or "*" indicate inactive accounts not available for logon and are not evaluated. If any interactive user password hash does not begin with "$6$", this is a finding.

Fix: F-32876r567443_fix

Lock all interactive user accounts not using SHA-512 hashing until the passwords can be regenerated with SHA-512.

b
The RHEL 8 shadow password suite must be configured to use a sufficient number of hashing rounds.
IA-5 - Medium - CCI-000196 - V-230233 - SV-230233r880705_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000196
Version
RHEL-08-010130
Vuln IDs
  • V-230233
Rule IDs
  • SV-230233r880705_rule
The system must use a strong hashing algorithm to store the password. The system must use a sufficient number of hashing rounds to ensure the required level of entropy. Passwords need to 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.
Checks: C-32902r880704_chk

Check that a minimum number of hash rounds is configured by running the following command: $ sudo grep -E "^SHA_CRYPT_" /etc/login.defs If only one of "SHA_CRYPT_MIN_ROUNDS" or "SHA_CRYPT_MAX_ROUNDS" is set, and this value is below "5000", this is a finding. If both "SHA_CRYPT_MIN_ROUNDS" and "SHA_CRYPT_MAX_ROUNDS" are set, and the highest value for either is below "5000", this is a finding.

Fix: F-32877r809272_fix

Configure RHEL 8 to encrypt all stored passwords with a strong cryptographic hash. Edit/modify the following line in the "/etc/login.defs" file and set "SHA_CRYPT_MIN_ROUNDS" to a value no lower than "5000": SHA_CRYPT_MIN_ROUNDS 5000

c
RHEL 8 operating systems booted with United Extensible Firmware Interface (UEFI) must require authentication upon booting into single-user mode and maintenance.
AC-3 - High - CCI-000213 - V-230234 - SV-230234r743922_rule
RMF Control
AC-3
Severity
High
CCI
CCI-000213
Version
RHEL-08-010140
Vuln IDs
  • V-230234
Rule IDs
  • SV-230234r743922_rule
If the system does not require valid authentication before it boots into single-user or maintenance mode, anyone who invokes single-user or maintenance mode is granted privileged access to all files on the system. GRUB 2 is the default boot loader for RHEL 8 and is designed to require a password to boot into single-user mode or make modifications to the boot menu.
Checks: C-32903r743920_chk

For systems that use BIOS, this is Not Applicable. Check to see if an encrypted grub superusers password is set. On systems that use UEFI, use the following command: $ sudo grep -iw grub2_password /boot/efi/EFI/redhat/user.cfg GRUB2_PASSWORD=grub.pbkdf2.sha512.[password_hash] If the grub superusers password does not begin with "grub.pbkdf2.sha512", this is a finding.

Fix: F-32878r743921_fix

Configure the system to require a grub bootloader password for the grub superusers account with the grub2-setpassword command, which creates/overwrites the /boot/efi/EFI/redhat/user.cfg file. Generate an encrypted grub2 password for the grub superusers account with the following command: $ sudo grub2-setpassword Enter password: Confirm password:

c
RHEL 8 operating systems booted with a BIOS must require authentication upon booting into single-user and maintenance modes.
AC-3 - High - CCI-000213 - V-230235 - SV-230235r743925_rule
RMF Control
AC-3
Severity
High
CCI
CCI-000213
Version
RHEL-08-010150
Vuln IDs
  • V-230235
Rule IDs
  • SV-230235r743925_rule
If the system does not require valid authentication before it boots into single-user or maintenance mode, anyone who invokes single-user or maintenance mode is granted privileged access to all files on the system. GRUB 2 is the default boot loader for RHEL 8 and is designed to require a password to boot into single-user mode or make modifications to the boot menu.
Checks: C-32904r743923_chk

For systems that use UEFI, this is Not Applicable. Check to see if an encrypted grub superusers password is set. On systems that use a BIOS, use the following command: $ sudo grep -iw grub2_password /boot/grub2/user.cfg GRUB2_PASSWORD=grub.pbkdf2.sha512.[password_hash] If the grub superusers password does not begin with "grub.pbkdf2.sha512", this is a finding.

Fix: F-32879r743924_fix

Configure the system to require a grub bootloader password for the grub superusers account with the grub2-setpassword command, which creates/overwrites the /boot/grub2/user.cfg file. Generate an encrypted grub2 password for the grub superusers account with the following command: $ sudo grub2-setpassword Enter password: Confirm password:

b
RHEL 8 operating systems must require authentication upon booting into rescue mode.
AC-3 - Medium - CCI-000213 - V-230236 - SV-230236r743928_rule
RMF Control
AC-3
Severity
Medium
CCI
CCI-000213
Version
RHEL-08-010151
Vuln IDs
  • V-230236
Rule IDs
  • SV-230236r743928_rule
If the system does not require valid root authentication before it boots into emergency or rescue mode, anyone who invokes emergency or rescue mode is granted privileged access to all files on the system.
Checks: C-32905r743926_chk

Check to see if the system requires authentication for rescue mode with the following command: $ sudo grep sulogin-shell /usr/lib/systemd/system/rescue.service ExecStart=-/usr/lib/systemd/systemd-sulogin-shell rescue If the "ExecStart" line is configured for anything other than "/usr/lib/systemd/systemd-sulogin-shell rescue", commented out, or missing, this is a finding.

Fix: F-32880r743927_fix

Configure the system to require authentication upon booting into rescue mode by adding the following line to the "/usr/lib/systemd/system/rescue.service" file. ExecStart=-/usr/lib/systemd/systemd-sulogin-shell rescue

b
The RHEL 8 pam_unix.so module must be configured in the password-auth file to use a FIPS 140-2 approved cryptographic hashing algorithm for system authentication.
IA-7 - Medium - CCI-000803 - V-230237 - SV-230237r809276_rule
RMF Control
IA-7
Severity
Medium
CCI
CCI-000803
Version
RHEL-08-010160
Vuln IDs
  • V-230237
Rule IDs
  • SV-230237r809276_rule
Unapproved mechanisms that are used for authentication to the cryptographic module are not verified and therefore cannot be relied upon to provide confidentiality or integrity, and DoD data may be compromised. RHEL 8 systems utilizing encryption are required to use FIPS-compliant mechanisms for authenticating to cryptographic modules. FIPS 140-2 is the current standard for validating that mechanisms used to access cryptographic modules utilize authentication that meets DoD requirements. This allows for Security Levels 1, 2, 3, or 4 for use on a general-purpose computing system.
Checks: C-32906r809274_chk

Verify that the pam_unix.so module is configured to use sha512. Check that the pam_unix.so module is configured to use sha512 in /etc/pam.d/password-auth with the following command: $ sudo grep password /etc/pam.d/password-auth | grep pam_unix password sufficient pam_unix.so sha512 If "sha512" is missing, or is commented out, this is a finding.

Fix: F-32881r809275_fix

Configure RHEL 8 to use a FIPS 140-2 approved cryptographic hashing algorithm for system authentication. Edit/modify the following line in the "/etc/pam.d/password-auth" file to include the sha512 option for pam_unix.so: password sufficient pam_unix.so sha512

b
RHEL 8 must prevent system daemons from using Kerberos for authentication.
IA-7 - Medium - CCI-000803 - V-230238 - SV-230238r646862_rule
RMF Control
IA-7
Severity
Medium
CCI
CCI-000803
Version
RHEL-08-010161
Vuln IDs
  • V-230238
Rule IDs
  • SV-230238r646862_rule
Unapproved mechanisms that are used for authentication to the cryptographic module are not verified and therefore cannot be relied upon to provide confidentiality or integrity, and DoD data may be compromised. RHEL 8 systems utilizing encryption are required to use FIPS-compliant mechanisms for authenticating to cryptographic modules. The key derivation function (KDF) in Kerberos is not FIPS compatible. Ensuring the system does not have any keytab files present prevents system daemons from using Kerberos for authentication. A keytab is a file containing pairs of Kerberos principals and encrypted keys. FIPS 140-2 is the current standard for validating that mechanisms used to access cryptographic modules utilize authentication that meets DoD requirements. This allows for Security Levels 1, 2, 3, or 4 for use on a general-purpose computing system.
Checks: C-32907r646861_chk

Verify that RHEL 8 prevents system daemons from using Kerberos for authentication. If the system is a server utilizing krb5-server-1.17-18.el8.x86_64 or newer, this requirement is not applicable. If the system is a workstation utilizing krb5-workstation-1.17-18.el8.x86_64 or newer, this requirement is not applicable. Check if there are available keytabs with the following command: $ sudo ls -al /etc/*.keytab If this command produces any file(s), this is a finding.

Fix: F-32882r567461_fix

Configure RHEL 8 to prevent system daemons from using Kerberos for authentication. Remove any files with the .keytab extension from the operating system.

b
The krb5-workstation package must not be installed on RHEL 8.
IA-7 - Medium - CCI-000803 - V-230239 - SV-230239r646864_rule
RMF Control
IA-7
Severity
Medium
CCI
CCI-000803
Version
RHEL-08-010162
Vuln IDs
  • V-230239
Rule IDs
  • SV-230239r646864_rule
Unapproved mechanisms that are used for authentication to the cryptographic module are not verified and therefore cannot be relied upon to provide confidentiality or integrity, and DoD data may be compromised. RHEL 8 systems utilizing encryption are required to use FIPS-compliant mechanisms for authenticating to cryptographic modules. Currently, Kerberos does not utilize FIPS 140-2 cryptography. FIPS 140-2 is the current standard for validating that mechanisms used to access cryptographic modules utilize authentication that meets DoD requirements. This allows for Security Levels 1, 2, 3, or 4 for use on a general-purpose computing system.
Checks: C-32908r646863_chk

Verify the krb5-workstation package has not been installed on the system with the following commands: If the system is a server or is utilizing krb5-workstation-1.17-18.el8.x86_64 or newer, this is Not Applicable. $ sudo yum list installed krb5-workstation krb5-workstation.x86_64 1.17-9.el8 repository If the krb5-workstation package is installed and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.

Fix: F-32883r567464_fix

Document the krb5-workstation package with the ISSO as an operational requirement or remove it from the system with the following command: $ sudo yum remove krb5-workstation

b
RHEL 8 must use a Linux Security Module configured to enforce limits on system services.
SC-3 - Medium - CCI-001084 - V-230240 - SV-230240r627750_rule
RMF Control
SC-3
Severity
Medium
CCI
CCI-001084
Version
RHEL-08-010170
Vuln IDs
  • V-230240
Rule IDs
  • SV-230240r627750_rule
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. This requirement applies to operating systems performing security function verification/testing and/or systems and environments that require this functionality.
Checks: C-32909r567466_chk

Verify the operating system verifies correct operation of all security functions. Check if "SELinux" is active and in "Enforcing" mode with the following command: $ sudo getenforce Enforcing If "SELinux" is not active and not in "Enforcing" mode, this is a finding.

Fix: F-32884r567467_fix

Configure the operating system to verify correct operation of all security functions. Set the "SELinux" status and the "Enforcing" mode by modifying the "/etc/selinux/config" file to have the following line: SELINUX=enforcing A reboot is required for the changes to take effect.

a
RHEL 8 must have policycoreutils package installed.
SC-3 - Low - CCI-001084 - V-230241 - SV-230241r627750_rule
RMF Control
SC-3
Severity
Low
CCI
CCI-001084
Version
RHEL-08-010171
Vuln IDs
  • V-230241
Rule IDs
  • SV-230241r627750_rule
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. Policycoreutils contains the policy core utilities that are required for basic operation of an SELinux-enabled system. These utilities include load_policy to load SELinux policies, setfile to label filesystems, newrole to switch roles, and run_init to run /etc/init.d scripts in the proper context.
Checks: C-32910r567469_chk

Verify the operating system has the policycoreutils package installed with the following command: $ sudo yum list installed policycoreutils policycoreutils.x86_64 2.9-3.el8 @anaconda If the policycoreutils package is not installed, this is a finding.

Fix: F-32885r567470_fix

Configure the operating system to have the policycoreutils package installed with the following command: $ sudo yum install policycoreutils

b
A sticky bit must be set on all RHEL 8 public directories to prevent unauthorized and unintended information transferred via shared system resources.
SC-4 - Medium - CCI-001090 - V-230243 - SV-230243r792857_rule
RMF Control
SC-4
Severity
Medium
CCI
CCI-001090
Version
RHEL-08-010190
Vuln IDs
  • V-230243
Rule IDs
  • SV-230243r792857_rule
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. This 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. There may be shared resources with configurable protections (e.g., files in storage) that may be assessed on specific information system components.
Checks: C-32912r792856_chk

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

Fix: F-32887r567476_fix

Configure all world-writable directories to have the sticky bit set to prevent unauthorized and unintended information transferred via shared system resources. Set the sticky bit on all world-writable directories using the command, replace "[World-Writable Directory]" with any directory path missing the sticky bit: $ sudo chmod 1777 [World-Writable Directory]

b
RHEL 8 must be configured so that all network connections associated with SSH traffic terminate after becoming unresponsive.
SC-10 - Medium - CCI-001133 - V-230244 - SV-230244r917867_rule
RMF Control
SC-10
Severity
Medium
CCI
CCI-001133
Version
RHEL-08-010200
Vuln IDs
  • V-230244
Rule IDs
  • SV-230244r917867_rule
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. Terminating 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. RHEL 8 uses /etc/ssh/sshd_config for configurations of OpenSSH. Within the sshd_config, the product of the values of "ClientAliveInterval" and "ClientAliveCountMax" is used to establish the inactivity threshold. The "ClientAliveInterval" is a timeout interval in seconds after which if no data has been received from the client, sshd will send a message through the encrypted channel to request a response from the client. The "ClientAliveCountMax" is the number of client alive messages that may be sent without sshd receiving any messages back from the client. If this threshold is met, sshd will disconnect the client. For more information on these settings and others, refer to the sshd_config man pages. Satisfies: SRG-OS-000163-GPOS-00072, SRG-OS-000126-GPOS-00066, SRG-OS-000279-GPOS-00109
Checks: C-32913r917865_chk

Verify the SSH server automatically terminates a user session after the SSH client has become unresponsive. Check that the "ClientAliveCountMax" is set to "1" by performing the following command: $ sudo grep -ir clientalivecountmax /etc/ssh/sshd_config* ClientAliveCountMax 1 If "ClientAliveCountMax" do not exist, is not set to a value of "1" in "/etc/ssh/sshd_config", or is commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-32888r917866_fix

Note: This setting must be applied in conjunction with RHEL-08-010201 to function correctly. Configure the SSH server to terminate a user session automatically after the SSH client has become unresponsive. Modify or append the following lines in the "/etc/ssh/sshd_config" file: ClientAliveCountMax 1 For the changes to take effect, the SSH daemon must be restarted: $ sudo systemctl restart sshd.service

b
The RHEL 8 /var/log/messages file must have mode 0640 or less permissive.
SI-11 - Medium - CCI-001314 - V-230245 - SV-230245r627750_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001314
Version
RHEL-08-010210
Vuln IDs
  • V-230245
Rule IDs
  • SV-230245r627750_rule
Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 8 system or platform. Additionally, Personally Identifiable Information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives. The 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.
Checks: C-32914r567481_chk

Verify that the "/var/log/messages" file has mode "0640" or less permissive with the following command: $ sudo stat -c "%a %n" /var/log/messages 640 /var/log/messages If a value of "0640" or less permissive is not returned, this is a finding.

Fix: F-32889r567482_fix

Change the permissions of the file "/var/log/messages" to "0640" by running the following command: $ sudo chmod 0640 /var/log/messages

b
The RHEL 8 /var/log/messages file must be owned by root.
SI-11 - Medium - CCI-001314 - V-230246 - SV-230246r627750_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001314
Version
RHEL-08-010220
Vuln IDs
  • V-230246
Rule IDs
  • SV-230246r627750_rule
Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 8 system or platform. Additionally, Personally Identifiable Information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives. The 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.
Checks: C-32915r567484_chk

Verify that the /var/log/messages file is owned by root with the following command: $ sudo stat -c "%U" /var/log/messages root If "root" is not returned as a result, this is a finding.

Fix: F-32890r567485_fix

Change the owner of the file /var/log/messages to root by running the following command: $ sudo chown root /var/log/messages

b
The RHEL 8 /var/log/messages file must be group-owned by root.
SI-11 - Medium - CCI-001314 - V-230247 - SV-230247r627750_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001314
Version
RHEL-08-010230
Vuln IDs
  • V-230247
Rule IDs
  • SV-230247r627750_rule
Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 8 system or platform. Additionally, Personally Identifiable Information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives. The 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.
Checks: C-32916r567487_chk

Verify the "/var/log/messages" file is group-owned by root with the following command: $ sudo stat -c "%G" /var/log/messages root If "root" is not returned as a result, this is a finding.

Fix: F-32891r567488_fix

Change the group of the file "/var/log/messages" to "root" by running the following command: $ sudo chgrp root /var/log/messages

b
The RHEL 8 /var/log directory must have mode 0755 or less permissive.
SI-11 - Medium - CCI-001314 - V-230248 - SV-230248r627750_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001314
Version
RHEL-08-010240
Vuln IDs
  • V-230248
Rule IDs
  • SV-230248r627750_rule
Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 8 system or platform. Additionally, Personally Identifiable Information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives. The 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.
Checks: C-32917r567490_chk

Verify that the "/var/log" directory has a mode of "0755" or less with the following command: $ sudo stat -c "%a %n" /var/log 755 If a value of "0755" or less permissive is not returned, this is a finding.

Fix: F-32892r567491_fix

Change the permissions of the directory "/var/log" to "0755" by running the following command: $ sudo chmod 0755 /var/log

b
The RHEL 8 /var/log directory must be owned by root.
SI-11 - Medium - CCI-001314 - V-230249 - SV-230249r627750_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001314
Version
RHEL-08-010250
Vuln IDs
  • V-230249
Rule IDs
  • SV-230249r627750_rule
Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 8 system or platform. Additionally, Personally Identifiable Information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives. The 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.
Checks: C-32918r567493_chk

Verify the /var/log directory is owned by root with the following command: $ sudo stat -c "%U" /var/log root If "root" is not returned as a result, this is a finding.

Fix: F-32893r567494_fix

Change the owner of the directory /var/log to root by running the following command: $ sudo chown root /var/log

b
The RHEL 8 /var/log directory must be group-owned by root.
SI-11 - Medium - CCI-001314 - V-230250 - SV-230250r627750_rule
RMF Control
SI-11
Severity
Medium
CCI
CCI-001314
Version
RHEL-08-010260
Vuln IDs
  • V-230250
Rule IDs
  • SV-230250r627750_rule
Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 8 system or platform. Additionally, Personally Identifiable Information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives. The 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.
Checks: C-32919r567496_chk

Verify the "/var/log" directory is group-owned by root with the following command: $ sudo stat -c "%G" /var/log root If "root" is not returned as a result, this is a finding.

Fix: F-32894r567497_fix

Change the group of the directory "/var/log" to "root" by running the following command: $ sudo chgrp root /var/log

b
The RHEL 8 SSH server must be configured to use only Message Authentication Codes (MACs) employing FIPS 140-2 validated cryptographic hash algorithms.
AC-17 - Medium - CCI-001453 - V-230251 - SV-230251r917870_rule
RMF Control
AC-17
Severity
Medium
CCI
CCI-001453
Version
RHEL-08-010290
Vuln IDs
  • V-230251
Rule IDs
  • SV-230251r917870_rule
Without cryptographic integrity protections, information can be altered by unauthorized users without detection. Remote access (e.g., RDP) is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Cryptographic 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. RHEL 8 incorporates system-wide 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. The system will attempt to use the first hash presented by the client that matches the server list. Listing the values "strongest to weakest" is a method to ensure the use of the strongest hash available to secure the SSH connection. Satisfies: SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174, SRG-OS-000125-GPOS-00065
Checks: C-32920r917868_chk

Verify the SSH server is configured to use only MACs employing FIPS 140-2-approved algorithms with the following command: $ sudo grep -i macs /etc/crypto-policies/back-ends/opensshserver.config -oMACS=hmac-sha2-512,hmac-sha2-256,[email protected],[email protected] If the MACs entries in the "opensshserver.config" file have any hashes other than shown here, the order differs from the example above, or they are missing or commented out, this is a finding.

Fix: F-32895r917869_fix

Configure the RHEL 8 SSH server to use only MACs employing FIPS 140-2-approved algorithms by updating the "/etc/crypto-policies/back-ends/opensshserver.config" file with the following line: -oMACS=hmac-sha2-512,hmac-sha2-256,[email protected],[email protected] A reboot is required for the changes to take effect.

b
The RHEL 8 operating system must implement DoD-approved encryption to protect the confidentiality of SSH server connections.
AC-17 - Medium - CCI-001453 - V-230252 - SV-230252r917873_rule
RMF Control
AC-17
Severity
Medium
CCI
CCI-001453
Version
RHEL-08-010291
Vuln IDs
  • V-230252
Rule IDs
  • SV-230252r917873_rule
Without cryptographic integrity protections, information can be altered by unauthorized users without detection. Remote access (e.g., RDP) is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Cryptographic 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. RHEL 8 incorporates system-wide 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. The system will attempt to use the first hash presented by the client that matches the server list. Listing the values "strongest to weakest" is a method to ensure the use of the strongest hash available to secure the SSH connection. Satisfies: SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174, SRG-OS-000125-GPOS-00065
Checks: C-32921r917871_chk

Verify the SSH server is configured to use only ciphers employing FIPS 140-2-approved algorithms with the following command: $ sudo grep -i ciphers /etc/crypto-policies/back-ends/opensshserver.config CRYPTO_POLICY='-oCiphers=aes256-ctr,aes192-ctr,aes128-ctr,[email protected],[email protected]' If the cipher entries in the "opensshserver.config" file have any ciphers other than shown here, the order differs from the example above, or they are missing or commented out, this is a finding.

Fix: F-32896r917872_fix

Configure the RHEL 8 SSH server to use only ciphers employing FIPS 140-2-approved algorithms by updating the "/etc/crypto-policies/back-ends/opensshserver.config" file with the following line: -oCiphers=aes256-ctr,aes192-ctr,aes128-ctr,[email protected],[email protected] A reboot is required for the changes to take effect.

a
RHEL 8 must ensure the SSH server uses strong entropy.
CM-6 - Low - CCI-000366 - V-230253 - SV-230253r627750_rule
RMF Control
CM-6
Severity
Low
CCI
CCI-000366
Version
RHEL-08-010292
Vuln IDs
  • V-230253
Rule IDs
  • SV-230253r627750_rule
The most important characteristic of a random number generator is its randomness, namely 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. The SSH implementation in RHEL8 uses the OPENSSL library, which does not use high-entropy sources by default. By using the SSH_USE_STRONG_RNG environment variable the OPENSSL random generator is reseeded from /dev/random. This setting is not recommended on computers without the hardware random generator because insufficient entropy causes the connection to be blocked until enough entropy is available.
Checks: C-32922r567505_chk

Verify the operating system SSH server uses strong entropy with the following command: Note: If the operating system is RHEL versions 8.0 or 8.1, this requirement is not applicable. $ sudo grep -i ssh_use_strong_rng /etc/sysconfig/sshd SSH_USE_STRONG_RNG=32 If the "SSH_USE_STRONG_RNG" line does not equal "32", is commented out or missing, this is a finding.

Fix: F-32897r567506_fix

Configure the operating system SSH server to use strong entropy. Add or modify the following line in the "/etc/sysconfig/sshd" file. SSH_USE_STRONG_RNG=32 The SSH service must be restarted for changes to take effect.

b
The RHEL 8 operating system must implement DoD-approved encryption in the OpenSSL package.
AC-17 - Medium - CCI-001453 - V-230254 - SV-230254r877394_rule
RMF Control
AC-17
Severity
Medium
CCI
CCI-001453
Version
RHEL-08-010293
Vuln IDs
  • V-230254
Rule IDs
  • SV-230254r877394_rule
Without cryptographic integrity protections, information can be altered by unauthorized users without detection. Remote access (e.g., RDP) is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Cryptographic 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. RHEL 8 incorporates system-wide crypto policies by default. The employed algorithms can be viewed in the /etc/crypto-policies/back-ends/openssl.config file. Satisfies: SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174, SRG-OS-000125-GPOS-00065
Checks: C-32923r567508_chk

Verify the OpenSSL library is configured to use only ciphers employing FIPS 140-2-approved algorithms: Verify that system-wide crypto policies are in effect: $ sudo grep -i opensslcnf.config /etc/pki/tls/openssl.cnf .include /etc/crypto-policies/back-ends/opensslcnf.config If the "opensslcnf.config" is not defined in the "/etc/pki/tls/openssl.cnf" file, this is a finding. Verify which system-wide crypto policy is in use: $ sudo update-crypto-policies --show FIPS If the system-wide crypto policy is set to anything other than "FIPS", this is a finding.

Fix: F-32898r567509_fix

Configure the RHEL 8 OpenSSL library to use only ciphers employing FIPS 140-2-approved algorithms with the following command: $ sudo fips-mode-setup --enable A reboot is required for the changes to take effect.

b
The RHEL 8 operating system must implement DoD-approved TLS encryption in the OpenSSL package.
AC-17 - Medium - CCI-001453 - V-230255 - SV-230255r877394_rule
RMF Control
AC-17
Severity
Medium
CCI
CCI-001453
Version
RHEL-08-010294
Vuln IDs
  • V-230255
Rule IDs
  • SV-230255r877394_rule
Without cryptographic integrity protections, information can be altered by unauthorized users without detection. Remote access (e.g., RDP) is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Cryptographic 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. RHEL 8 incorporates system-wide crypto policies by default. The employed algorithms can be viewed in the /etc/crypto-policies/back-ends/openssl.config file. Satisfies: SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174, SRG-OS-000125-GPOS-00065
Checks: C-32924r809380_chk

Verify the OpenSSL library is configured to use only DoD-approved TLS encryption: For versions prior to crypto-policies-20210617-1.gitc776d3e.el8.noarch: $ sudo grep -i MinProtocol /etc/crypto-policies/back-ends/opensslcnf.config MinProtocol = TLSv1.2 If the "MinProtocol" is set to anything older than "TLSv1.2", this is a finding. For version crypto-policies-20210617-1.gitc776d3e.el8.noarch and newer: $ sudo grep -i MinProtocol /etc/crypto-policies/back-ends/opensslcnf.config TLS.MinProtocol = TLSv1.2 DTLS.MinProtocol = DTLSv1.2 If the "TLS.MinProtocol" is set to anything older than "TLSv1.2" or the "DTLS.MinProtocol" is set to anything older than DTLSv1.2, this is a finding.

Fix: F-32899r809381_fix

Configure the RHEL 8 OpenSSL library to use only DoD-approved TLS encryption by editing the following line in the "/etc/crypto-policies/back-ends/opensslcnf.config" file: For versions prior to crypto-policies-20210617-1.gitc776d3e.el8.noarch: MinProtocol = TLSv1.2 For version crypto-policies-20210617-1.gitc776d3e.el8.noarch and newer: TLS.MinProtocol = TLSv1.2 DTLS.MinProtocol = DTLSv1.2 A reboot is required for the changes to take effect.

b
The RHEL 8 operating system must implement DoD-approved TLS encryption in the GnuTLS package.
AC-17 - Medium - CCI-001453 - V-230256 - SV-230256r877394_rule
RMF Control
AC-17
Severity
Medium
CCI
CCI-001453
Version
RHEL-08-010295
Vuln IDs
  • V-230256
Rule IDs
  • SV-230256r877394_rule
Without cryptographic integrity protections, information can be altered by unauthorized users without detection. Transport Layer Security (TLS) encryption is a required security setting as a number of known vulnerabilities have been reported against Secure Sockets Layer (SSL) and earlier versions of TLS. Encryption of private information is essential to ensuring data confidentiality. If private information is not encrypted, it can be intercepted and easily read by an unauthorized party. SQL Server must use a minimum of FIPS 140-2-approved TLS version 1.2, and all non-FIPS-approved SSL and TLS versions must be disabled. NIST SP 800-52 specifies the preferred configurations for government systems. Cryptographic 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. The GnuTLS library offers an API to access secure communications protocols. SSLv2 is not available in the GnuTLS library. The RHEL 8 system-wide crypto policy defines employed algorithms in the /etc/crypto-policies/back-ends/gnutls.config file. Satisfies: SRG-OS-000250-GPOS-00093, SRG-OS-000423-GPOS-00187
Checks: C-32925r792858_chk

Verify the GnuTLS library is configured to only allow DoD-approved SSL/TLS Versions: $ sudo grep -io +vers.* /etc/crypto-policies/back-ends/gnutls.config +VERS-ALL:-VERS-DTLS0.9:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1:-VERS-DTLS1.0:+COMP-NULL:%PROFILE_MEDIUM If the "gnutls.config" does not list "-VERS-DTLS0.9:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1:-VERS-DTLS1.0" to disable unapproved SSL/TLS versions, this is a finding.

Fix: F-32900r567515_fix

Configure the RHEL 8 GnuTLS library to use only DoD-approved encryption by adding the following line to "/etc/crypto-policies/back-ends/gnutls.config": +VERS-ALL:-VERS-DTLS0.9:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1:-VERS-DTLS1.0 A reboot is required for the changes to take effect.

b
RHEL 8 system commands must have mode 755 or less permissive.
CM-5 - Medium - CCI-001499 - V-230257 - SV-230257r792862_rule
RMF Control
CM-5
Severity
Medium
CCI
CCI-001499
Version
RHEL-08-010300
Vuln IDs
  • V-230257
Rule IDs
  • SV-230257r792862_rule
If RHEL 8 were to allow 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. This requirement applies to RHEL 8 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. Only qualified and authorized individuals will be allowed to obtain access to information system components for purposes of initiating changes, including upgrades and modifications.
Checks: C-32926r792860_chk

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

Fix: F-32901r792861_fix

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

b
RHEL 8 system commands must be owned by root.
CM-5 - Medium - CCI-001499 - V-230258 - SV-230258r627750_rule
RMF Control
CM-5
Severity
Medium
CCI
CCI-001499
Version
RHEL-08-010310
Vuln IDs
  • V-230258
Rule IDs
  • SV-230258r627750_rule
If RHEL 8 were to allow 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. This requirement applies to RHEL 8 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. Only qualified and authorized individuals will be allowed to obtain access to information system components for purposes of initiating changes, including upgrades and modifications.
Checks: C-32927r567520_chk

Verify the system commands contained in the following directories are owned by "root" with the following command: $ sudo find -L /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin ! -user root -exec ls -l {} \; If any system commands are returned, this is a finding.

Fix: F-32902r567521_fix

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

b
RHEL 8 system commands must be group-owned by root or a system account.
CM-5 - Medium - CCI-001499 - V-230259 - SV-230259r792864_rule
RMF Control
CM-5
Severity
Medium
CCI
CCI-001499
Version
RHEL-08-010320
Vuln IDs
  • V-230259
Rule IDs
  • SV-230259r792864_rule
If RHEL 8 were to allow 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. This requirement applies to RHEL 8 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. Only qualified and authorized individuals will be allowed to obtain access to information system components for purposes of initiating changes, including upgrades and modifications.
Checks: C-32928r792863_chk

Verify the system commands contained in the following directories are group-owned by "root", or a required system account, with the following command: $ sudo find -L /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin ! -group root -exec ls -l {} \; If any system commands are returned and is not group-owned by a required system account, this is a finding.

Fix: F-32903r567524_fix

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

b
RHEL 8 library files must have mode 755 or less permissive.
CM-5 - Medium - CCI-001499 - V-230260 - SV-230260r792867_rule
RMF Control
CM-5
Severity
Medium
CCI
CCI-001499
Version
RHEL-08-010330
Vuln IDs
  • V-230260
Rule IDs
  • SV-230260r792867_rule
If RHEL 8 were to allow 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. This requirement applies to RHEL 8 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. Only qualified and authorized individuals will be allowed to obtain access to information system components for purposes of initiating changes, including upgrades and modifications.
Checks: C-32929r792865_chk

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

Fix: F-32904r792866_fix

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

b
RHEL 8 library files must be owned by root.
CM-5 - Medium - CCI-001499 - V-230261 - SV-230261r627750_rule
RMF Control
CM-5
Severity
Medium
CCI
CCI-001499
Version
RHEL-08-010340
Vuln IDs
  • V-230261
Rule IDs
  • SV-230261r627750_rule
If RHEL 8 were to allow 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. This requirement applies to RHEL 8 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. Only qualified and authorized individuals will be allowed to obtain access to information system components for purposes of initiating changes, including upgrades and modifications.
Checks: C-32930r567529_chk

Verify the system-wide shared library files are owned by "root" with the following command: $ sudo find -L /lib /lib64 /usr/lib /usr/lib64 ! -user root -exec ls -l {} \; If any system wide shared library file is returned, this is a finding.

Fix: F-32905r567530_fix

Configure the system-wide shared library files (/lib, /lib64, /usr/lib and /usr/lib64) to be protected from unauthorized access. Run the following command, replacing "[FILE]" with any library file not owned by "root". $ sudo chown root [FILE]

b
RHEL 8 library files must be group-owned by root or a system account.
CM-5 - Medium - CCI-001499 - V-230262 - SV-230262r627750_rule
RMF Control
CM-5
Severity
Medium
CCI
CCI-001499
Version
RHEL-08-010350
Vuln IDs
  • V-230262
Rule IDs
  • SV-230262r627750_rule
If RHEL 8 were to allow 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. This requirement applies to RHEL 8 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. Only qualified and authorized individuals will be allowed to obtain access to information system components for purposes of initiating changes, including upgrades and modifications.
Checks: C-32931r567532_chk

Verify the system-wide shared library files are group-owned by "root" with the following command: $ sudo find -L /lib /lib64 /usr/lib /usr/lib64 ! -group root -exec ls -l {} \; If any system wide shared library file is returned and is not group-owned by a required system account, this is a finding.

Fix: F-32906r567533_fix

Configure the system-wide shared library files (/lib, /lib64, /usr/lib and /usr/lib64) to be protected from unauthorized access. Run the following command, replacing "[FILE]" with any library file not group-owned by "root". $ sudo chgrp root [FILE]

b
The RHEL 8 file integrity tool must notify the system administrator when changes to the baseline configuration or anomalies in the operation of any security functions are discovered within an organizationally defined frequency.
CM-3 - Medium - CCI-001744 - V-230263 - SV-230263r902716_rule
RMF Control
CM-3
Severity
Medium
CCI
CCI-001744
Version
RHEL-08-010360
Vuln IDs
  • V-230263
Rule IDs
  • SV-230263r902716_rule
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. Detecting 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 System Security Manager (ISSM)/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. Notifications provided by information systems include messages to local computer consoles, and/or hardware indications, such as lights. This 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. RHEL 8 comes with many optional software packages. A file integrity tool called Advanced Intrusion Detection Environment (AIDE) is one of those optional packages. This requirement assumes the use of AIDE; however, a different tool may be used if the requirements are met. Note that AIDE does not have a configuration that will send a notification, so a cron job is recommended that uses the mail application on the system to email the results of the file integrity check. Satisfies: SRG-OS-000363-GPOS-00150, SRG-OS-000446-GPOS-00200, SRG-OS-000447-GPOS-00201
Checks: C-32932r902714_chk

Verify the operating system routinely checks the baseline configuration for unauthorized changes and notifies the system administrator when anomalies in the operation of any security functions are discovered. Check that RHEL 8 routinely executes a file integrity scan for changes to the system baseline. The command used in the example will use a daily occurrence. Check the cron directories for scripts controlling the execution and notification of results of the file integrity application. For example, if AIDE is installed on the system, use the following commands: $ sudo ls -al /etc/cron.* | grep aide -rwxr-xr-x 1 root root 29 Nov 22 2015 aide $ sudo grep aide /etc/crontab /var/spool/cron/root /etc/crontab: 30 04 * * * root /usr/sbin/aide /var/spool/cron/root: 30 04 * * * root /usr/sbin/aide $ sudo more /etc/cron.daily/aide #!/bin/bash /usr/sbin/aide --check | /bin/mail -s "$HOSTNAME - Daily AIDE integrity check run" root@example_server_name.mil If 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.

Fix: F-32907r902715_fix

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. The following example output is generic. It will set cron to run AIDE daily and to send email at the completion of the analysis. $ sudo more /etc/cron.daily/aide #!/bin/bash /usr/sbin/aide --check | /bin/mail -s "$HOSTNAME - Daily AIDE integrity check run" root@example_server_name.mil Note: Per requirement RHEL-08-010358, the "mailx" package must be installed on the system to enable email functionality.

c
RHEL 8 must prevent the installation of software, patches, service packs, device drivers, or operating system components from a repository without verification they have been digitally signed using a certificate that is issued by a Certificate Authority (CA) that is recognized and approved by the organization.
CM-5 - High - CCI-001749 - V-230264 - SV-230264r880711_rule
RMF Control
CM-5
Severity
High
CCI
CCI-001749
Version
RHEL-08-010370
Vuln IDs
  • V-230264
Rule IDs
  • SV-230264r880711_rule
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. Accordingly, patches, service packs, device drivers, or operating system components must be signed with a certificate recognized and approved by the organization. Verifying the authenticity of the software prior to installation validates the integrity of the patch or upgrade received from a vendor. This verifies the software has not been tampered with and that it has been provided by a trusted vendor. Self-signed certificates are disallowed by this requirement. The operating system should not have to verify the software again. This requirement does not mandate DoD certificates for this purpose; however, the certificate used to verify the software must be from an approved CA.
Checks: C-32933r880709_chk

Verify the operating system prevents the installation of patches, service packs, device drivers, or operating system components from a repository without verification that they have been digitally signed using a certificate that is recognized and approved by the organization. Check that YUM verifies the signature of packages from a repository prior to install with the following command: $ sudo grep -E '^\[.*\]|gpgcheck' /etc/yum.repos.d/*.repo /etc/yum.repos.d/appstream.repo:[appstream] /etc/yum.repos.d/appstream.repo:gpgcheck=1 /etc/yum.repos.d/baseos.repo:[baseos] /etc/yum.repos.d/baseos.repo:gpgcheck=1 If "gpgcheck" is not set to "1", or if options are missing or commented out, ask the System Administrator how the certificates for patches and other operating system components are verified. If there is no process to validate certificates that is approved by the organization, this is a finding.

Fix: F-32908r880710_fix

Configure the operating system to verify the signature of packages from a repository prior to install by setting the following option in the "/etc/yum.repos.d/[your_repo_name].repo" file: gpgcheck=1

c
RHEL 8 must prevent the installation of software, patches, service packs, device drivers, or operating system components of local packages without verification they have been digitally signed using a certificate that is issued by a Certificate Authority (CA) that is recognized and approved by the organization.
CM-5 - High - CCI-001749 - V-230265 - SV-230265r877463_rule
RMF Control
CM-5
Severity
High
CCI
CCI-001749
Version
RHEL-08-010371
Vuln IDs
  • V-230265
Rule IDs
  • SV-230265r877463_rule
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. Accordingly, patches, service packs, device drivers, or operating system components must be signed with a certificate recognized and approved by the organization. Verifying the authenticity of the software prior to installation validates the integrity of the patch or upgrade received from a vendor. This verifies the software has not been tampered with and that it has been provided by a trusted vendor. Self-signed certificates are disallowed by this requirement. The operating system should not have to verify the software again. This requirement does not mandate DoD certificates for this purpose; however, the certificate used to verify the software must be from an approved CA.
Checks: C-32934r567541_chk

Verify the operating system prevents the installation of patches, service packs, device drivers, or operating system components from a repository without verification that they have been digitally signed using a certificate that is recognized and approved by the organization. Check if YUM is configured to perform a signature check on local packages with the following command: $ sudo grep -i localpkg_gpgcheck /etc/dnf/dnf.conf localpkg_gpgcheck =True If "localpkg_gpgcheck" is not set to either "1", "True", or "yes", commented out, or is missing from "/etc/dnf/dnf.conf", this is a finding.

Fix: F-32909r567542_fix

Configure the operating system to remove all software components after updated versions have been installed. Set the "localpkg_gpgcheck" option to "True" in the "/etc/dnf/dnf.conf" file: localpkg_gpgcheck=True

b
RHEL 8 must prevent the loading of a new kernel for later execution.
CM-5 - Medium - CCI-001749 - V-230266 - SV-230266r877463_rule
RMF Control
CM-5
Severity
Medium
CCI
CCI-001749
Version
RHEL-08-010372
Vuln IDs
  • V-230266
Rule IDs
  • SV-230266r877463_rule
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. Disabling 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. The sysctl --system command will load settings from all system configuration files. All configuration files are sorted by their filename in lexicographic order, regardless of which of the directories they reside in. If multiple files specify the same option, the entry in the file with the lexicographically latest name will take precedence. Files are read from directories in the following list from top to bottom. Once a file of a given filename is loaded, any file of the same name in subsequent directories is ignored. /etc/sysctl.d/*.conf /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf
Checks: C-32935r858746_chk

Verify the operating system is configured to disable kernel image loading with the following commands: Check the status of the kernel.kexec_load_disabled kernel parameter. $ sudo sysctl kernel.kexec_load_disabled kernel.kexec_load_disabled = 1 If "kernel.kexec_load_disabled" is not set to "1" or is missing, this is a finding. Check that the configuration files are present to enable this kernel parameter. $ sudo grep -r kernel.kexec_load_disabled /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf /etc/sysctl.d/99-sysctl.conf:kernel.kexec_load_disabled = 1 If "kernel.kexec_load_disabled" is not set to "1", is missing or commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-32910r858747_fix

Configure the operating system to disable kernel image loading. Add or edit the following line in a system configuration file, in the "/etc/sysctl.d/" directory: kernel.kexec_load_disabled = 1 Remove any configurations that conflict with the above from the following locations: /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf Load settings from all system configuration files with the following command: $ sudo sysctl --system

b
RHEL 8 must enable kernel parameters to enforce discretionary access control on symlinks.
AC-3 - Medium - CCI-002165 - V-230267 - SV-230267r858751_rule
RMF Control
AC-3
Severity
Medium
CCI
CCI-002165
Version
RHEL-08-010373
Vuln IDs
  • V-230267
Rule IDs
  • SV-230267r858751_rule
Discretionary Access Control (DAC) is based on the notion that individual users are "owners" of objects and therefore have discretion over who should be authorized to access the object and in which mode (e.g., read or write). Ownership is usually acquired as a consequence of creating the object or via specified ownership assignment. DAC allows the owner to determine who will have access to objects they control. An example of DAC includes user-controlled file permissions. When discretionary access control policies are implemented, subjects are not constrained with regard to what actions they can take with information for which they have already been granted access. Thus, subjects that have been granted access to information are not prevented from passing (i.e., the subjects have the discretion to pass) the information to other subjects or objects. A subject that is constrained in its operation by Mandatory Access Control policies is still able to operate under the less rigorous constraints of this requirement. Thus, while Mandatory Access Control imposes constraints preventing a subject from passing information to another subject operating at a different sensitivity level, this requirement permits the subject to pass the information to any subject at the same sensitivity level. The policy is bounded by the information system boundary. Once the information is passed outside the control of the information system, additional means may be required to ensure the constraints remain in effect. While the older, more traditional definitions of discretionary access control require identity-based access control, that limitation is not required for this use of discretionary access control. 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 UID of the link and follower match, or when the directory owner matches the symlink's owner. Disallowing such symlinks helps mitigate vulnerabilities based on insecure file system accessed by privileged programs, avoiding an exploitation vector exploiting unsafe use of open() or creat(). The sysctl --system command will load settings from all system configuration files. All configuration files are sorted by their filename in lexicographic order, regardless of which of the directories they reside in. If multiple files specify the same option, the entry in the file with the lexicographically latest name will take precedence. Files are read from directories in the following list from top to bottom. Once a file of a given filename is loaded, any file of the same name in subsequent directories is ignored. /etc/sysctl.d/*.conf /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf Satisfies: SRG-OS-000312-GPOS-00122, SRG-OS-000312-GPOS-00123, SRG-OS-000312-GPOS-00124, SRG-OS-000324-GPOS-00125
Checks: C-32936r858749_chk

Verify the operating system is configured to enable DAC on symlinks with the following commands: Check the status of the fs.protected_symlinks kernel parameter. $ sudo sysctl fs.protected_symlinks fs.protected_symlinks = 1 If "fs.protected_symlinks" is not set to "1" or is missing, this is a finding. Check that the configuration files are present to enable this kernel parameter. $ sudo grep -r fs.protected_symlinks /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf /etc/sysctl.d/99-sysctl.conf:fs.protected_symlinks = 1 If "fs.protected_symlinks" is not set to "1", is missing or commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-32911r858750_fix

Configure the operating system to enable DAC on symlinks. Add or edit the following line in a system configuration file, in the "/etc/sysctl.d/" directory: fs.protected_symlinks = 1 Remove any configurations that conflict with the above from the following locations: /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf Load settings from all system configuration files with the following command: $ sudo sysctl --system

b
RHEL 8 must enable kernel parameters to enforce discretionary access control on hardlinks.
AC-3 - Medium - CCI-002165 - V-230268 - SV-230268r858754_rule
RMF Control
AC-3
Severity
Medium
CCI
CCI-002165
Version
RHEL-08-010374
Vuln IDs
  • V-230268
Rule IDs
  • SV-230268r858754_rule
Discretionary Access Control (DAC) is based on the notion that individual users are "owners" of objects and therefore have discretion over who should be authorized to access the object and in which mode (e.g., read or write). Ownership is usually acquired as a consequence of creating the object or via specified ownership assignment. DAC allows the owner to determine who will have access to objects they control. An example of DAC includes user-controlled file permissions. When discretionary access control policies are implemented, subjects are not constrained with regard to what actions they can take with information for which they have already been granted access. Thus, subjects that have been granted access to information are not prevented from passing (i.e., the subjects have the discretion to pass) the information to other subjects or objects. A subject that is constrained in its operation by Mandatory Access Control policies is still able to operate under the less rigorous constraints of this requirement. Thus, while Mandatory Access Control imposes constraints preventing a subject from passing information to another subject operating at a different sensitivity level, this requirement permits the subject to pass the information to any subject at the same sensitivity level. The policy is bounded by the information system boundary. Once the information is passed outside the control of the information system, additional means may be required to ensure the constraints remain in effect. While the older, more traditional definitions of discretionary access control require identity-based access control, that limitation is not required for this use of discretionary access control. By enabling the fs.protected_hardlinks kernel parameter, users can no longer create soft or hard links to files they do not own. Disallowing such hardlinks mitigate vulnerabilities based on insecure file system accessed by privileged programs, avoiding an exploitation vector exploiting unsafe use of open() or creat(). The sysctl --system command will load settings from all system configuration files. All configuration files are sorted by their filename in lexicographic order, regardless of which of the directories they reside in. If multiple files specify the same option, the entry in the file with the lexicographically latest name will take precedence. Files are read from directories in the following list from top to bottom. Once a file of a given filename is loaded, any file of the same name in subsequent directories is ignored. /etc/sysctl.d/*.conf /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf Satisfies: SRG-OS-000312-GPOS-00122, SRG-OS-000312-GPOS-00123, SRG-OS-000312-GPOS-00124, SRG-OS-000324-GPOS-00125
Checks: C-32937r858752_chk

Verify the operating system is configured to enable DAC on hardlinks with the following commands: Check the status of the fs.protected_hardlinks kernel parameter. $ sudo sysctl fs.protected_hardlinks fs.protected_hardlinks = 1 If "fs.protected_hardlinks" is not set to "1" or is missing, this is a finding. Check that the configuration files are present to enable this kernel parameter. $ sudo grep -r fs.protected_hardlinks /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf /etc/sysctl.d/99-sysctl.conf:fs.protected_hardlinks = 1 If "fs.protected_hardlinks" is not set to "1", is missing or commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-32912r858753_fix

Configure the operating system to enable DAC on hardlinks. Add or edit the following line in a system configuration file, in the "/etc/sysctl.d/" directory: fs.protected_hardlinks = 1 Remove any configurations that conflict with the above from the following locations: /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf Load settings from all system configuration files with the following command: $ sudo sysctl --system

a
RHEL 8 must restrict access to the kernel message buffer.
SC-4 - Low - CCI-001090 - V-230269 - SV-230269r858756_rule
RMF Control
SC-4
Severity
Low
CCI
CCI-001090
Version
RHEL-08-010375
Vuln IDs
  • V-230269
Rule IDs
  • SV-230269r858756_rule
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. This 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. There may be shared resources with configurable protections (e.g., files in storage) that may be assessed on specific information system components. Restricting access to the kernel message buffer limits access to only root. This prevents attackers from gaining additional system information as a non-privileged user. The sysctl --system command will load settings from all system configuration files. All configuration files are sorted by their filename in lexicographic order, regardless of which of the directories they reside in. If multiple files specify the same option, the entry in the file with the lexicographically latest name will take precedence. Files are read from directories in the following list from top to bottom. Once a file of a given filename is loaded, any file of the same name in subsequent directories is ignored. /etc/sysctl.d/*.conf /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf
Checks: C-32938r833295_chk

Verify the operating system is configured to restrict access to the kernel message buffer with the following commands: Check the status of the kernel.dmesg_restrict kernel parameter. $ sudo sysctl kernel.dmesg_restrict kernel.dmesg_restrict = 1 If "kernel.dmesg_restrict" is not set to "1" or is missing, this is a finding. Check that the configuration files are present to enable this kernel parameter. $ sudo grep -r kernel.dmesg_restrict /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf /etc/sysctl.d/99-sysctl.conf:kernel.dmesg_restrict = 1 If "kernel.dmesg_restrict" is not set to "1", is missing or commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-32913r858755_fix

Configure the operating system to restrict access to the kernel message buffer. Add or edit the following line in a system configuration file, in the "/etc/sysctl.d/" directory: kernel.dmesg_restrict = 1 Remove any configurations that conflict with the above from the following locations: /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf Load settings from all system configuration files with the following command: $ sudo sysctl --system

a
RHEL 8 must prevent kernel profiling by unprivileged users.
SC-4 - Low - CCI-001090 - V-230270 - SV-230270r858758_rule
RMF Control
SC-4
Severity
Low
CCI
CCI-001090
Version
RHEL-08-010376
Vuln IDs
  • V-230270
Rule IDs
  • SV-230270r858758_rule
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. This 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. There may be shared resources with configurable protections (e.g., files in storage) that may be assessed on specific information system components. Setting the kernel.perf_event_paranoid kernel parameter to "2" prevents attackers from gaining additional system information as a non-privileged user. The sysctl --system command will load settings from all system configuration files. All configuration files are sorted by their filename in lexicographic order, regardless of which of the directories they reside in. If multiple files specify the same option, the entry in the file with the lexicographically latest name will take precedence. Files are read from directories in the following list from top to bottom. Once a file of a given filename is loaded, any file of the same name in subsequent directories is ignored. /etc/sysctl.d/*.conf /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf
Checks: C-32939r833297_chk

Verify the operating system is configured to prevent kernel profiling by unprivileged users with the following commands: Check the status of the kernel.perf_event_paranoid kernel parameter. $ sudo sysctl kernel.perf_event_paranoid kernel.perf_event_paranoid = 2 If "kernel.perf_event_paranoid" is not set to "2" or is missing, this is a finding. Check that the configuration files are present to enable this kernel parameter. $ sudo grep -r kernel.perf_event_paranoid /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf /etc/sysctl.d/99-sysctl.conf:kernel.perf_event_paranoid = 2 If "kernel.perf_event_paranoid" is not set to "2", is missing or commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-32914r858757_fix

Configure the operating system to prevent kernel profiling by unprivileged users. Add or edit the following line in a system configuration file, in the "/etc/sysctl.d/" directory: kernel.perf_event_paranoid = 2 Remove any configurations that conflict with the above from the following locations: /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf Load settings from all system configuration files with the following command: $ sudo sysctl --system

b
RHEL 8 must require users to provide a password for privilege escalation.
IA-11 - Medium - CCI-002038 - V-230271 - SV-230271r854026_rule
RMF Control
IA-11
Severity
Medium
CCI
CCI-002038
Version
RHEL-08-010380
Vuln IDs
  • V-230271
Rule IDs
  • SV-230271r854026_rule
Without reauthentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user reauthenticate. Satisfies: SRG-OS-000373-GPOS-00156, SRG-OS-000373-GPOS-00157, SRG-OS-000373-GPOS-00158
Checks: C-32940r854024_chk

Verify that "/etc/sudoers" has no occurrences of "NOPASSWD". Check that the "/etc/sudoers" file has no occurrences of "NOPASSWD" by running the following command: $ sudo grep -i nopasswd /etc/sudoers /etc/sudoers.d/* %admin ALL=(ALL) NOPASSWD: ALL If any occurrences of "NOPASSWD" are returned from the command and have not been documented with the ISSO as an organizationally defined administrative group utilizing MFA, this is a finding.

Fix: F-32915r854025_fix

Remove any occurrence of "NOPASSWD" found in "/etc/sudoers" file or files in the "/etc/sudoers.d" directory.

b
RHEL 8 must require users to reauthenticate for privilege escalation.
IA-11 - Medium - CCI-002038 - V-230272 - SV-230272r854027_rule
RMF Control
IA-11
Severity
Medium
CCI
CCI-002038
Version
RHEL-08-010381
Vuln IDs
  • V-230272
Rule IDs
  • SV-230272r854027_rule
Without reauthentication, users may access resources or perform tasks for which they do not have authorization. When operating systems provide the capability to escalate a functional capability, it is critical the user reauthenticate. Satisfies: SRG-OS-000373-GPOS-00156, SRG-OS-000373-GPOS-00157, SRG-OS-000373-GPOS-00158
Checks: C-32941r567562_chk

Verify that "/etc/sudoers" has no occurrences of "!authenticate". Check that the "/etc/sudoers" file has no occurrences of "!authenticate" by running the following command: $ sudo grep -i !authenticate /etc/sudoers /etc/sudoers.d/* If any occurrences of "!authenticate" return from the command, this is a finding.

Fix: F-32916r567563_fix

Remove any occurrence of "!authenticate" found in "/etc/sudoers" file or files in the "/etc/sudoers.d" directory.

b
RHEL 8 must have the packages required for multifactor authentication installed.
IA-2 - Medium - CCI-001948 - V-230273 - SV-230273r854028_rule
RMF Control
IA-2
Severity
Medium
CCI
CCI-001948
Version
RHEL-08-010390
Vuln IDs
  • V-230273
Rule IDs
  • SV-230273r854028_rule
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. Multifactor 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. A privileged account is defined as an information system account with authorizations of a privileged user. Remote access is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. This 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).
Checks: C-32942r743941_chk

Verify the operating system has the packages required for multifactor authentication installed with the following commands: $ sudo yum list installed openssl-pkcs11 openssl-pkcs11.x86_64 0.4.8-2.el8 @anaconda If the "openssl-pkcs11" package is not installed, ask the administrator to indicate what type of multifactor authentication is being utilized and what packages are installed to support it. If there is no evidence of multifactor authentication being used, this is a finding.

Fix: F-32917r743942_fix

Configure the operating system to implement multifactor authentication by installing the required package with the following command: $ sudo yum install openssl-pkcs11

b
RHEL 8 must implement certificate status checking for multifactor authentication.
IA-2 - Medium - CCI-001948 - V-230274 - SV-230274r858741_rule
RMF Control
IA-2
Severity
Medium
CCI
CCI-001948
Version
RHEL-08-010400
Vuln IDs
  • V-230274
Rule IDs
  • SV-230274r858741_rule
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. Multifactor 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. RHEL 8 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. Satisfies: SRG-OS-000375-GPOS-00160, SRG-OS-000377-GPOS-00162
Checks: C-32943r858740_chk

Verify the operating system implements certificate status checking for multifactor authentication. Note: If the System Administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable. Check to see if Online Certificate Status Protocol (OCSP) is enabled and using the proper digest value on the system with the following command: $ sudo grep certificate_verification /etc/sssd/sssd.conf /etc/sssd/conf.d/*.conf | grep -v "^#" certificate_verification = ocsp_dgst=sha1 If the certificate_verification line is missing from the [sssd] section, or is missing "ocsp_dgst=sha1", ask the administrator to indicate what type of multifactor authentication is being utilized and how the system implements certificate status checking. If there is no evidence of certificate status checking being used, this is a finding.

Fix: F-32918r809280_fix

Configure the operating system to implement certificate status checking for multifactor authentication. Review the "/etc/sssd/sssd.conf" file to determine if the system is configured to prevent OCSP or certificate verification. Add the following line to the [sssd] section of the "/etc/sssd/sssd.conf" file: certificate_verification = ocsp_dgst=sha1 The "sssd" service must be restarted for the changes to take effect. To restart the "sssd" service, run the following command: $ sudo systemctl restart sssd.service

b
RHEL 8 must accept Personal Identity Verification (PIV) credentials.
IA-2 - Medium - CCI-001953 - V-230275 - SV-230275r854030_rule
RMF Control
IA-2
Severity
Medium
CCI
CCI-001953
Version
RHEL-08-010410
Vuln IDs
  • V-230275
Rule IDs
  • SV-230275r854030_rule
The use of PIV credentials facilitates standardization and reduces the risk of unauthorized access. The DoD has mandated the use of the Common Access Card (CAC) to support identity management and personal authentication for systems covered under Homeland Security Presidential Directive (HSPD) 12, as well as making the CAC a primary component of layered protection for national security systems.
Checks: C-32944r567571_chk

Verify RHEL 8 accepts PIV credentials. Check that the "opensc" package is installed on the system with the following command: $ sudo yum list installed opensc opensc.x86_64 0.19.0-5.el8 @anaconda Check that "opensc" accepts PIV cards with the following command: $ sudo opensc-tool --list-drivers | grep -i piv PIV-II Personal Identity Verification Card If the "opensc" package is not installed and the "opensc-tool" driver list does not include "PIV-II", this is a finding.

Fix: F-32919r567572_fix

Configure RHEL 8 to accept PIV credentials. Install the "opensc" package using the following command: $ sudo yum install opensc

b
RHEL 8 must implement non-executable data to protect its memory from unauthorized code execution.
SI-16 - Medium - CCI-002824 - V-230276 - SV-230276r854031_rule
RMF Control
SI-16
Severity
Medium
CCI
CCI-002824
Version
RHEL-08-010420
Vuln IDs
  • V-230276
Rule IDs
  • SV-230276r854031_rule
Some adversaries launch attacks with the intent of executing code in non-executable 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. Examples of attacks are buffer overflow attacks.
Checks: C-32945r567574_chk

Verify the NX (no-execution) bit flag is set on the system. Check that the no-execution bit flag is set with the following commands: $ sudo dmesg | grep NX [ 0.000000] NX (Execute Disable) protection: active If "dmesg" does not show "NX (Execute Disable) protection" active, check the cpuinfo settings with the following command: $ sudo less /proc/cpuinfo | grep -i flags flags : fpu vme de pse tsc ms nx rdtscp lm constant_tsc If "flags" does not contain the "nx" flag, this is a finding.

Fix: F-32920r567575_fix

The NX bit execute protection must be enabled in the system BIOS.

b
RHEL 8 must clear the page allocator to prevent use-after-free attacks.
SC-3 - Medium - CCI-001084 - V-230277 - SV-230277r792884_rule
RMF Control
SC-3
Severity
Medium
CCI
CCI-001084
Version
RHEL-08-010421
Vuln IDs
  • V-230277
Rule IDs
  • SV-230277r792884_rule
Some adversaries launch attacks with the intent of executing code in non-executable 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. Poisoning writes an arbitrary value to freed pages, so any modification or reference to that page after being freed or before being initialized will be detected and prevented. This prevents many types of use-after-free vulnerabilities at little performance cost. Also prevents leak of data and detection of corrupted memory. Satisfies: SRG-OS-000134-GPOS-00068, SRG-OS-000433-GPOS-00192
Checks: C-32946r792883_chk

Verify that GRUB 2 is configured to enable page poisoning to mitigate use-after-free vulnerabilities with the following commands: Check that the current GRUB 2 configuration has page poisoning enabled: $ sudo grub2-editenv list | grep page_poison kernelopts=root=/dev/mapper/rhel-root ro crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet fips=1 page_poison=1 vsyscall=none audit=1 audit_backlog_limit=8192 boot=UUID=8d171156-cd61-421c-ba41-1c021ac29e82 If "page_poison" is not set to "1" or is missing, this is a finding. Check that page poisoning is enabled by default to persist in kernel updates: $ sudo grep page_poison /etc/default/grub GRUB_CMDLINE_LINUX="page_poison=1" If "page_poison" is not set to "1", is missing or commented out, this is a finding.

Fix: F-32921r567578_fix

Configure RHEL 8 to enable page poisoning with the following commands: $ sudo grubby --update-kernel=ALL --args="page_poison=1" Add or modify the following line in "/etc/default/grub" to ensure the configuration survives kernel updates: GRUB_CMDLINE_LINUX="page_poison=1"

b
RHEL 8 must disable virtual syscalls.
SC-3 - Medium - CCI-001084 - V-230278 - SV-230278r792886_rule
RMF Control
SC-3
Severity
Medium
CCI
CCI-001084
Version
RHEL-08-010422
Vuln IDs
  • V-230278
Rule IDs
  • SV-230278r792886_rule
Syscalls are special routines in the Linux kernel, which userspace applications ask to do privileged tasks. Invoking a system call is an expensive operation because the processor must interrupt the currently executing task and switch context to kernel mode and then back to userspace after the system call completes. Virtual Syscalls map into user space a page that contains some variables and the implementation of some system calls. This allows the system calls to be executed in userspace to alleviate the context switching expense. Virtual Syscalls provide an opportunity of attack for a user who has control of the return instruction pointer. Disabling vsyscalls help to prevent return oriented programming (ROP) attacks via buffer overflows and overruns. If the system intends to run containers based on RHEL 6 components, then virtual syscalls will need enabled so the components function properly. Satisfies: SRG-OS-000134-GPOS-00068, SRG-OS-000433-GPOS-00192
Checks: C-32947r792885_chk

Verify that GRUB 2 is configured to disable vsyscalls with the following commands: Check that the current GRUB 2 configuration disables vsyscalls: $ sudo grub2-editenv list | grep vsyscall kernelopts=root=/dev/mapper/rhel-root ro crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet fips=1 page_poison=1 vsyscall=none audit=1 audit_backlog_limit=8192 boot=UUID=8d171156-cd61-421c-ba41-1c021ac29e82 If "vsyscall" is not set to "none" or is missing, this is a finding. Check that vsyscalls are disabled by default to persist in kernel updates: $ sudo grep vsyscall /etc/default/grub GRUB_CMDLINE_LINUX="vsyscall=none" If "vsyscall" is not set to "none", is missing or commented out and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.

Fix: F-32922r743947_fix

Document the use of vsyscalls with the ISSO as an operational requirement or disable them with the following command: $ sudo grubby --update-kernel=ALL --args="vsyscall=none" Add or modify the following line in "/etc/default/grub" to ensure the configuration survives kernel updates: GRUB_CMDLINE_LINUX="vsyscall=none"

b
RHEL 8 must clear SLUB/SLAB objects to prevent use-after-free attacks.
SC-3 - Medium - CCI-001084 - V-230279 - SV-230279r792888_rule
RMF Control
SC-3
Severity
Medium
CCI
CCI-001084
Version
RHEL-08-010423
Vuln IDs
  • V-230279
Rule IDs
  • SV-230279r792888_rule
Some adversaries launch attacks with the intent of executing code in non-executable 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. Poisoning writes an arbitrary value to freed pages, so any modification or reference to that page after being freed or before being initialized will be detected and prevented. This prevents many types of use-after-free vulnerabilities at little performance cost. Also prevents leak of data and detection of corrupted memory. SLAB objects are blocks of physically-contiguous memory. SLUB is the unqueued SLAB allocator. Satisfies: SRG-OS-000134-GPOS-00068, SRG-OS-000433-GPOS-00192
Checks: C-32948r792887_chk

Verify that GRUB 2 is configured to enable poisoning of SLUB/SLAB objects to mitigate use-after-free vulnerabilities with the following commands: Check that the current GRUB 2 configuration has poisoning of SLUB/SLAB objects enabled: $ sudo grub2-editenv list | grep slub_debug kernelopts=root=/dev/mapper/rhel-root ro crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet fips=1 slub_debug=P page_poison=1 vsyscall=none audit=1 audit_backlog_limit=8192 boot=UUID=8d171156-cd61-421c-ba41-1c021ac29e82 If "slub_debug" is not set to "P" or is missing, this is a finding. Check that poisoning of SLUB/SLAB objects is enabled by default to persist in kernel updates: $ sudo grep slub_debug /etc/default/grub GRUB_CMDLINE_LINUX="slub_debug=P" If "slub_debug" is not set to "P", is missing or commented out, this is a finding.

Fix: F-32923r567584_fix

Configure RHEL 8 to enable poisoning of SLUB/SLAB objects with the following commands: $ sudo grubby --update-kernel=ALL --args="slub_debug=P" Add or modify the following line in "/etc/default/grub" to ensure the configuration survives kernel updates: GRUB_CMDLINE_LINUX="slub_debug=P"

b
RHEL 8 must implement address space layout randomization (ASLR) to protect its memory from unauthorized code execution.
SI-16 - Medium - CCI-002824 - V-230280 - SV-230280r858767_rule
RMF Control
SI-16
Severity
Medium
CCI
CCI-002824
Version
RHEL-08-010430
Vuln IDs
  • V-230280
Rule IDs
  • SV-230280r858767_rule
Some adversaries launch attacks with the intent of executing code in non-executable 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. Examples of attacks are buffer overflow attacks. The sysctl --system command will load settings from all system configuration files. All configuration files are sorted by their filename in lexicographic order, regardless of which of the directories they reside in. If multiple files specify the same option, the entry in the file with the lexicographically latest name will take precedence. Files are read from directories in the following list from top to bottom. Once a file of a given filename is loaded, any file of the same name in subsequent directories is ignored. /etc/sysctl.d/*.conf /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf
Checks: C-32949r858765_chk

Verify RHEL 8 implements ASLR with the following command: $ sudo sysctl kernel.randomize_va_space kernel.randomize_va_space = 2 If "kernel.randomize_va_space" is not set to "2", this is a finding. Check that the configuration files are present to enable this kernel parameter. $ sudo grep -r kernel.randomize_va_space /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf /etc/sysctl.d/99-sysctl.conf:kernel.randomize_va_space = 2 If "kernel.randomize_va_space" is not set to "2", is missing or commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-32924r858766_fix

Configure the operating system to implement virtual address space randomization. Add or edit the following line in a system configuration file, in the "/etc/sysctl.d/" directory: kernel.randomize_va_space=2 Remove any configurations that conflict with the above from the following locations: /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf Issue the following command to make the changes take effect: $ sudo sysctl --system

a
YUM must remove all software components after updated versions have been installed on RHEL 8.
SI-2 - Low - CCI-002617 - V-230281 - SV-230281r854034_rule
RMF Control
SI-2
Severity
Low
CCI
CCI-002617
Version
RHEL-08-010440
Vuln IDs
  • V-230281
Rule IDs
  • SV-230281r854034_rule
Previous versions of software components that are not removed from the information system after updates have been installed may be exploited by adversaries. Some information technology products may remove older versions of software automatically from the information system.
Checks: C-32950r567589_chk

Verify the operating system removes all software components after updated versions have been installed. Check if YUM is configured to remove unneeded packages with the following command: $ sudo grep -i clean_requirements_on_remove /etc/dnf/dnf.conf clean_requirements_on_remove=True If "clean_requirements_on_remove" is not set to either "1", "True", or "yes", commented out, or is missing from "/etc/dnf/dnf.conf", this is a finding.

Fix: F-32925r567590_fix

Configure the operating system to remove all software components after updated versions have been installed. Set the "clean_requirements_on_remove" option to "True" in the "/etc/dnf/dnf.conf" file: clean_requirements_on_remove=True

b
RHEL 8 must enable the SELinux targeted policy.
SI-6 - Medium - CCI-002696 - V-230282 - SV-230282r854035_rule
RMF Control
SI-6
Severity
Medium
CCI
CCI-002696
Version
RHEL-08-010450
Vuln IDs
  • V-230282
Rule IDs
  • SV-230282r854035_rule
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. This requirement applies to operating systems performing security function verification/testing and/or systems and environments that require this functionality.
Checks: C-32951r567592_chk

Ensure the operating system verifies correct operation of all security functions. Check if "SELinux" is active and is enforcing the targeted policy with the following command: $ sudo sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: actual (secure) Max kernel policy version: 31 If the "Loaded policy name" is not set to "targeted", this is a finding. Verify that the /etc/selinux/config file is configured to the "SELINUXTYPE" to "targeted": $ sudo grep -i "selinuxtype" /etc/selinux/config | grep -v '^#' SELINUXTYPE = targeted If no results are returned or "SELINUXTYPE" is not set to "targeted", this is a finding.

Fix: F-32926r567593_fix

Configure the operating system to verify correct operation of all security functions. Set the "SELinuxtype" to the "targeted" policy by modifying the "/etc/selinux/config" file to have the following line: SELINUXTYPE=targeted A reboot is required for the changes to take effect.

c
There must be no shosts.equiv files on the RHEL 8 operating system.
CM-6 - High - CCI-000366 - V-230283 - SV-230283r627750_rule
RMF Control
CM-6
Severity
High
CCI
CCI-000366
Version
RHEL-08-010460
Vuln IDs
  • V-230283
Rule IDs
  • SV-230283r627750_rule
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.
Checks: C-32952r567595_chk

Verify there are no "shosts.equiv" files on RHEL 8 with the following command: $ sudo find / -name shosts.equiv If a "shosts.equiv" file is found, this is a finding.

Fix: F-32927r567596_fix

Remove any found "shosts.equiv" files from the system. $ sudo rm /etc/ssh/shosts.equiv

c
There must be no .shosts files on the RHEL 8 operating system.
CM-6 - High - CCI-000366 - V-230284 - SV-230284r627750_rule
RMF Control
CM-6
Severity
High
CCI
CCI-000366
Version
RHEL-08-010470
Vuln IDs
  • V-230284
Rule IDs
  • SV-230284r627750_rule
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.
Checks: C-32953r567598_chk

Verify there are no ".shosts" files on RHEL 8 with the following command: $ sudo find / -name '*.shosts' If any ".shosts" files are found, this is a finding.

Fix: F-32928r567599_fix

Remove any found ".shosts" files from the system. $ sudo rm /[path]/[to]/[file]/.shosts

a
RHEL 8 must enable the hardware random number generator entropy gatherer service.
CM-6 - Low - CCI-000366 - V-230285 - SV-230285r928587_rule
RMF Control
CM-6
Severity
Low
CCI
CCI-000366
Version
RHEL-08-010471
Vuln IDs
  • V-230285
Rule IDs
  • SV-230285r928587_rule
The most important characteristic of a random number generator is its randomness, namely 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. The 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).
Checks: C-32954r928586_chk

Note: For RHEL versions 8.4 and above running with kernel FIPS mode enabled as specified by RHEL-08-010020, this requirement is Not Applicable. Check that RHEL 8 has enabled the hardware random number generator entropy gatherer service. Verify the rngd service is enabled and active with the following commands: $ sudo systemctl is-enabled rngd enabled $ sudo systemctl is-active rngd active If the service is not "enabled" and "active", this is a finding.

Fix: F-32929r917875_fix

Start the rngd service and enable the rngd service with the following commands: $ sudo systemctl start rngd.service $ sudo systemctl enable rngd.service

b
The RHEL 8 SSH public host key files must have mode 0644 or less permissive.
CM-6 - Medium - CCI-000366 - V-230286 - SV-230286r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010480
Vuln IDs
  • V-230286
Rule IDs
  • SV-230286r627750_rule
If a public host key file is modified by an unauthorized user, the SSH service may be compromised.
Checks: C-32955r567604_chk

Verify the SSH public host key files have mode "0644" or less permissive with the following command: $ sudo ls -l /etc/ssh/*.pub -rw-r--r-- 1 root root 618 Nov 28 06:43 ssh_host_dsa_key.pub -rw-r--r-- 1 root root 347 Nov 28 06:43 ssh_host_key.pub -rw-r--r-- 1 root root 238 Nov 28 06:43 ssh_host_rsa_key.pub If any key.pub file has a mode more permissive than "0644", this is a finding. Note: SSH public key files may be found in other directories on the system depending on the installation.

Fix: F-32930r567605_fix

Change the mode of public host key files under "/etc/ssh" to "0644" with the following command: $ sudo chmod 0644 /etc/ssh/*key.pub The SSH daemon must be restarted for the changes to take effect. To restart the SSH daemon, run the following command: $ sudo systemctl restart sshd.service

b
The RHEL 8 SSH private host key files must have mode 0640 or less permissive.
CM-6 - Medium - CCI-000366 - V-230287 - SV-230287r880714_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010490
Vuln IDs
  • V-230287
Rule IDs
  • SV-230287r880714_rule
If an unauthorized user obtains the private SSH host key file, the host could be impersonated.
Checks: C-32956r880712_chk

Verify the SSH private host key files have mode "0640" or less permissive with the following command: $ sudo ls -l /etc/ssh/ssh_host*key -rw-r----- 1 root ssh_keys 668 Nov 28 06:43 ssh_host_dsa_key -rw-r----- 1 root ssh_keys 582 Nov 28 06:43 ssh_host_key -rw-r----- 1 root ssh_keys 887 Nov 28 06:43 ssh_host_rsa_key If any private host key file has a mode more permissive than "0640", this is a finding.

Fix: F-32931r880713_fix

Configure the mode of SSH private host key files under "/etc/ssh" to "0640" with the following command: $ sudo chmod 0640 /etc/ssh/ssh_host*key The SSH daemon must be restarted for the changes to take effect. To restart the SSH daemon, run the following command: $ sudo systemctl restart sshd.service

b
The RHEL 8 SSH daemon must perform strict mode checking of home directory configuration files.
CM-6 - Medium - CCI-000366 - V-230288 - SV-230288r858701_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010500
Vuln IDs
  • V-230288
Rule IDs
  • SV-230288r858701_rule
If other users have access to modify user-specific SSH configuration files, they may be able to log on to the system as another user.
Checks: C-32957r858700_chk

Verify the SSH daemon performs strict mode checking of home directory configuration files with the following command: $ sudo grep -ir strictmodes /etc/ssh/sshd_config* StrictModes yes If "StrictModes" is set to "no", is missing, or the returned line is commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-32932r567611_fix

Configure SSH to perform strict mode checking of home directory configuration files. Uncomment the "StrictModes" keyword in "/etc/ssh/sshd_config" and set the value to "yes": StrictModes yes The SSH daemon must be restarted for the changes to take effect. To restart the SSH daemon, run the following command: $ sudo systemctl restart sshd.service

b
The RHEL 8 SSH daemon must not allow authentication using known host’s authentication.
CM-6 - Medium - CCI-000366 - V-230290 - SV-230290r858705_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010520
Vuln IDs
  • V-230290
Rule IDs
  • SV-230290r858705_rule
Configuring this setting for the SSH daemon provides additional assurance that remote logon via SSH will require a password, even in the event of misconfiguration elsewhere.
Checks: C-32959r858704_chk

Verify the SSH daemon does not allow authentication using known host’s authentication with the following command: $ sudo grep -ir IgnoreUserKnownHosts /etc/ssh/sshd_config* IgnoreUserKnownHosts yes If the value is returned as "no", the returned line is commented out, or no output is returned, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-32934r567617_fix

Configure the SSH daemon to not allow authentication using known host’s authentication. Add the following line in "/etc/ssh/sshd_config", or uncomment the line and set the value to "yes": IgnoreUserKnownHosts yes The SSH daemon must be restarted for the changes to take effect. To restart the SSH daemon, run the following command: $ sudo systemctl restart sshd.service

b
The RHEL 8 SSH daemon must not allow Kerberos authentication, except to fulfill documented and validated mission requirements.
CM-6 - Medium - CCI-000366 - V-230291 - SV-230291r858707_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010521
Vuln IDs
  • V-230291
Rule IDs
  • SV-230291r858707_rule
Configuring these settings for the SSH daemon provides additional assurance that remote logon via SSH will not use unused methods of authentication, even in the event of misconfiguration elsewhere.
Checks: C-32960r858706_chk

Verify the SSH daemon does not allow Kerberos authentication with the following command: $ sudo grep -ir KerberosAuthentication /etc/ssh/sshd_config* KerberosAuthentication no If the value is returned as "yes", the returned line is commented out, no output is returned, or has not been documented with the ISSO, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-32935r743956_fix

Configure the SSH daemon to not allow Kerberos authentication. Add the following line in "/etc/ssh/sshd_config", or uncomment the line and set the value to "no": KerberosAuthentication no The SSH daemon must be restarted for the changes to take effect. To restart the SSH daemon, run the following command: $ sudo systemctl restart sshd.service

a
RHEL 8 must use a separate file system for /var.
CM-6 - Low - CCI-000366 - V-230292 - SV-230292r902718_rule
RMF Control
CM-6
Severity
Low
CCI
CCI-000366
Version
RHEL-08-010540
Vuln IDs
  • V-230292
Rule IDs
  • SV-230292r902718_rule
The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing.
Checks: C-32961r902717_chk

Verify that a separate file system has been created for "/var". Check that a file system has been created for "/var" with the following command: $ sudo grep /var /etc/fstab /dev/mapper/... /var xfs defaults,nodev 0 0 If a separate entry for "/var" is not in use, this is a finding.

Fix: F-32936r567623_fix

Migrate the "/var" path onto a separate file system.

a
RHEL 8 must use a separate file system for /var/log.
CM-6 - Low - CCI-000366 - V-230293 - SV-230293r902720_rule
RMF Control
CM-6
Severity
Low
CCI
CCI-000366
Version
RHEL-08-010541
Vuln IDs
  • V-230293
Rule IDs
  • SV-230293r902720_rule
The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing.
Checks: C-32962r902719_chk

Verify that a separate file system has been created for "/var/log". Check that a file system has been created for "/var/log" with the following command: $ sudo grep /var/log /etc/fstab /dev/mapper/... /var/log xfs defaults,nodev,noexec,nosuid 0 0 If a separate entry for "/var/log" is not in use, this is a finding.

Fix: F-32937r567626_fix

Migrate the "/var/log" path onto a separate file system.

a
RHEL 8 must use a separate file system for the system audit data path.
CM-6 - Low - CCI-000366 - V-230294 - SV-230294r627750_rule
RMF Control
CM-6
Severity
Low
CCI
CCI-000366
Version
RHEL-08-010542
Vuln IDs
  • V-230294
Rule IDs
  • SV-230294r627750_rule
The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing.
Checks: C-32963r567628_chk

Verify that a separate file system/partition has been created for the system audit data path with the following command: Note: /var/log/audit is used as the example as it is a common location. $ sudo grep /var/log/audit /etc/fstab UUID=3645951a /var/log/audit xfs defaults 1 2 If an entry for "/var/log/audit" does not exist, ask the System Administrator if the system audit logs are being written to a different file system/partition on the system, then grep for that file system/partition. If a separate file system/partition does not exist for the system audit data path, this is a finding.

Fix: F-32938r567629_fix

Migrate the system audit data path onto a separate file system.

b
A separate RHEL 8 filesystem must be used for the /tmp directory.
CM-6 - Medium - CCI-000366 - V-230295 - SV-230295r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010543
Vuln IDs
  • V-230295
Rule IDs
  • SV-230295r627750_rule
The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing.
Checks: C-32964r567631_chk

Verify that a separate file system/partition has been created for non-privileged local interactive user home directories. $ sudo grep /tmp /etc/fstab /dev/mapper/rhel-tmp /tmp xfs defaults,nodev,nosuid,noexec 0 0 If a separate entry for the file system/partition "/tmp" does not exist, this is a finding.

Fix: F-32939r567632_fix

Migrate the "/tmp" directory onto a separate file system/partition.

b
RHEL 8 must not permit direct logons to the root account using remote access via SSH.
IA-2 - Medium - CCI-000770 - V-230296 - SV-230296r858711_rule
RMF Control
IA-2
Severity
Medium
CCI
CCI-000770
Version
RHEL-08-010550
Vuln IDs
  • V-230296
Rule IDs
  • SV-230296r858711_rule
Even though the communications channel may be encrypted, an additional layer of security is gained by extending the policy of not logging on directly as root. In addition, logging on with a user-specific account provides individual accountability of actions performed on the system.
Checks: C-32965r858710_chk

Verify remote access using SSH prevents users from logging on directly as "root". Check that SSH prevents users from logging on directly as "root" with the following command: $ sudo grep -ir PermitRootLogin /etc/ssh/sshd_config* PermitRootLogin no If the "PermitRootLogin" keyword is set to "yes", is missing, or is commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-32940r567635_fix

Configure RHEL 8 to stop users from logging on remotely as the "root" user via SSH. Edit the appropriate "/etc/ssh/sshd_config" file to uncomment or add the line for the "PermitRootLogin" keyword and set its value to "no": PermitRootLogin no The SSH daemon must be restarted for the changes to take effect. To restart the SSH daemon, run the following command: $ sudo systemctl restart sshd.service

b
The rsyslog service must be running in RHEL 8.
CM-6 - Medium - CCI-000366 - V-230298 - SV-230298r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010561
Vuln IDs
  • V-230298
Rule IDs
  • SV-230298r627750_rule
Configuring RHEL 8 to implement organization-wide security implementation guides and security checklists ensures compliance with federal standards and establishes a common security baseline across the DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example: registry settings; account, file, directory permission settings; and settings for functions, ports, protocols, services, and remote connections.
Checks: C-32967r567640_chk

Verify the rsyslog service is enabled and active with the following commands: $ sudo systemctl is-enabled rsyslog enabled $ sudo systemctl is-active rsyslog active If the service is not "enabled" and "active" this is a finding.

Fix: F-32942r567641_fix

Start the auditd service, and enable the rsyslog service with the following commands: $ sudo systemctl start rsyslog.service $ sudo systemctl enable rsyslog.service

b
RHEL 8 must prevent files with the setuid and setgid bit set from being executed on file systems that contain user home directories.
CM-6 - Medium - CCI-000366 - V-230299 - SV-230299r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010570
Vuln IDs
  • V-230299
Rule IDs
  • SV-230299r627750_rule
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 unprivileged users to attain unauthorized administrative access.
Checks: C-32968r567643_chk

Verify file systems that contain user home directories are mounted with the "nosuid" option. Note: If a separate file system has not been created for the user home directories (user home directories are mounted under "/"), this is automatically a finding as the "nosuid" option cannot be used on the "/" system. Find the file system(s) that contain the user home directories with the following command: $ sudo awk -F: '($3>=1000)&&($7 !~ /nologin/){print $1,$3,$6}' /etc/passwd smithj:1001: /home/smithj robinst:1002: /home/robinst Check the file systems that are mounted at boot time with the following command: $ sudo more /etc/fstab UUID=a411dc99-f2a1-4c87-9e05-184977be8539 /home xfs rw,relatime,discard,data=ordered,nosuid,nodev,noexec 0 0 If a file system found in "/etc/fstab" refers to the user home directory file system and it does not have the "nosuid" option set, this is a finding.

Fix: F-32943r567644_fix

Configure the "/etc/fstab" to use the "nosuid" option on file systems that contain user home directories for interactive users.

b
RHEL 8 must prevent files with the setuid and setgid bit set from being executed on the /boot directory.
CM-6 - Medium - CCI-000366 - V-230300 - SV-230300r743959_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010571
Vuln IDs
  • V-230300
Rule IDs
  • SV-230300r743959_rule
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 unprivileged users to attain unauthorized administrative access.
Checks: C-32969r743958_chk

For systems that use UEFI, this is Not Applicable. Verify the /boot directory is mounted with the "nosuid" option with the following command: $ sudo mount | grep '\s/boot\s' /dev/sda1 on /boot type xfs (rw,nosuid,relatime,seclabe,attr2,inode64,noquota) If the /boot file system does not have the "nosuid" option set, this is a finding.

Fix: F-32944r567647_fix

Configure the "/etc/fstab" to use the "nosuid" option on the /boot directory.

b
RHEL 8 must prevent special devices on non-root local partitions.
CM-6 - Medium - CCI-000366 - V-230301 - SV-230301r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010580
Vuln IDs
  • V-230301
Rule IDs
  • SV-230301r627750_rule
The "nodev" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. The only legitimate location for device files is the /dev directory located on the root partition.
Checks: C-32970r567649_chk

Verify all non-root local partitions are mounted with the "nodev" option with the following command: $ sudo mount | grep '^/dev\S* on /\S' | grep --invert-match 'nodev' If any output is produced, this is a finding.

Fix: F-32945r567650_fix

Configure the "/etc/fstab" to use the "nodev" option on all non-root local partitions.

b
RHEL 8 must prevent code from being executed on file systems that contain user home directories.
CM-6 - Medium - CCI-000366 - V-230302 - SV-230302r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010590
Vuln IDs
  • V-230302
Rule IDs
  • SV-230302r627750_rule
The "noexec" mount option causes the system not to execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.
Checks: C-32971r567652_chk

Verify file systems that contain user home directories are mounted with the "noexec" option. Note: If a separate file system has not been created for the user home directories (user home directories are mounted under "/"), this is automatically a finding as the "noexec" option cannot be used on the "/" system. Find the file system(s) that contain the user home directories with the following command: $ sudo awk -F: '($3>=1000)&&($7 !~ /nologin/){print $1,$3,$6}' /etc/passwd smithj:1001: /home/smithj robinst:1002: /home/robinst Check the file systems that are mounted at boot time with the following command: $ sudo more /etc/fstab UUID=a411dc99-f2a1-4c87-9e05-184977be8539 /home ext4 rw,relatime,discard,data=ordered,nosuid,nodev,noexec 0 2 If a file system found in "/etc/fstab" refers to the user home directory file system and it does not have the "noexec" option set, this is a finding.

Fix: F-32946r567653_fix

Configure the "/etc/fstab" to use the "noexec" option on file systems that contain user home directories for interactive users.

b
RHEL 8 must prevent special devices on file systems that are used with removable media.
CM-6 - Medium - CCI-000366 - V-230303 - SV-230303r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010600
Vuln IDs
  • V-230303
Rule IDs
  • SV-230303r627750_rule
The "nodev" mount option causes the system not to interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.
Checks: C-32972r567655_chk

Verify file systems that are used for removable media are mounted with the "nodev" option with the following command: $ sudo more /etc/fstab UUID=2bc871e4-e2a3-4f29-9ece-3be60c835222 /mnt/usbflash vfat noauto,owner,ro,nosuid,nodev,noexec 0 0 If a file system found in "/etc/fstab" refers to removable media and it does not have the "nodev" option set, this is a finding.

Fix: F-32947r567656_fix

Configure the "/etc/fstab" to use the "nodev" option on file systems that are associated with removable media.

b
RHEL 8 must prevent code from being executed on file systems that are used with removable media.
CM-6 - Medium - CCI-000366 - V-230304 - SV-230304r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010610
Vuln IDs
  • V-230304
Rule IDs
  • SV-230304r627750_rule
The "noexec" mount option causes the system not to execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.
Checks: C-32973r567658_chk

Verify file systems that are used for removable media are mounted with the "noexec" option with the following command: $ sudo more /etc/fstab UUID=2bc871e4-e2a3-4f29-9ece-3be60c835222 /mnt/usbflash vfat noauto,owner,ro,nosuid,nodev,noexec 0 0 If a file system found in "/etc/fstab" refers to removable media and it does not have the "noexec" option set, this is a finding.

Fix: F-32948r567659_fix

Configure the "/etc/fstab" to use the "noexec" option on file systems that are associated with removable media.

b
RHEL 8 must prevent files with the setuid and setgid bit set from being executed on file systems that are used with removable media.
CM-6 - Medium - CCI-000366 - V-230305 - SV-230305r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010620
Vuln IDs
  • V-230305
Rule IDs
  • SV-230305r627750_rule
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 unprivileged users to attain unauthorized administrative access.
Checks: C-32974r567661_chk

Verify file systems that are used for removable media are mounted with the "nosuid" option with the following command: $ sudo more /etc/fstab UUID=2bc871e4-e2a3-4f29-9ece-3be60c835222 /mnt/usbflash vfat noauto,owner,ro,nosuid,nodev,noexec 0 0 If a file system found in "/etc/fstab" refers to removable media and it does not have the "nosuid" option set, this is a finding.

Fix: F-32949r567662_fix

Configure the "/etc/fstab" to use the "nosuid" option on file systems that are associated with removable media.

b
RHEL 8 must prevent code from being executed on file systems that are imported via Network File System (NFS).
CM-6 - Medium - CCI-000366 - V-230306 - SV-230306r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010630
Vuln IDs
  • V-230306
Rule IDs
  • SV-230306r627750_rule
The "noexec" mount option causes the system not to execute binary files. This option must be used for mounting any file system not containing approved binary as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.
Checks: C-32975r567664_chk

Verify that file systems being imported via NFS are mounted with the "noexec" option with the following command: $ sudo grep nfs /etc/fstab | grep noexec UUID=e06097bb-cfcd-437b-9e4d-a691f5662a7d /store nfs rw,nosuid,nodev,noexec 0 0 If a file system found in "/etc/fstab" refers to NFS and it does not have the "noexec" option set, this is a finding.

Fix: F-32950r567665_fix

Configure the "/etc/fstab" to use the "noexec" option on file systems that are being imported via NFS.

b
RHEL 8 must prevent special devices on file systems that are imported via Network File System (NFS).
CM-6 - Medium - CCI-000366 - V-230307 - SV-230307r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010640
Vuln IDs
  • V-230307
Rule IDs
  • SV-230307r627750_rule
The "nodev" mount option causes the system to not interpret character or block special devices. Executing character or block special devices from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.
Checks: C-32976r567667_chk

Verify file systems that are being NFS-imported are mounted with the "nodev" option with the following command: $ sudo grep nfs /etc/fstab | grep nodev UUID=e06097bb-cfcd-437b-9e4d-a691f5662a7d /store nfs rw,nosuid,nodev,noexec 0 0 If a file system found in "/etc/fstab" refers to NFS and it does not have the "nodev" option set, this is a finding.

Fix: F-32951r567668_fix

Configure the "/etc/fstab" to use the "nodev" option on file systems that are being imported via NFS.

b
RHEL 8 must prevent files with the setuid and setgid bit set from being executed on file systems that are imported via Network File System (NFS).
CM-6 - Medium - CCI-000366 - V-230308 - SV-230308r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010650
Vuln IDs
  • V-230308
Rule IDs
  • SV-230308r627750_rule
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 unprivileged users to attain unauthorized administrative access.
Checks: C-32977r567670_chk

Verify that file systems being imported via NFS are mounted with the "nosuid" option with the following command: $ sudo grep nfs /etc/fstab | grep nosuid UUID=e06097bb-cfcd-437b-9e4d-a691f5662a7d /store nfs rw,nosuid,nodev,noexec 0 0 If a file system found in "/etc/fstab" refers to NFS and it does not have the "nosuid" option set, this is a finding.

Fix: F-32952r567671_fix

Configure the "/etc/fstab" to use the "nosuid" option on file systems that are being imported via NFS.

b
Local RHEL 8 initialization files must not execute world-writable programs.
CM-6 - Medium - CCI-000366 - V-230309 - SV-230309r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010660
Vuln IDs
  • V-230309
Rule IDs
  • SV-230309r627750_rule
If user start-up files execute world-writable programs, especially in unprotected directories, they could be maliciously modified to destroy user files or otherwise compromise the system at the user level. If the system is compromised at the user level, it is easier to elevate privileges to eventually compromise the system at the root and network level.
Checks: C-32978r567673_chk

Verify that local initialization files do not execute world-writable programs. Check the system for world-writable files. The following command will discover and print world-writable files. Run it once for each local partition [PART]: $ sudo find [PART] -xdev -type f -perm -0002 -print For all files listed, check for their presence in the local initialization files with the following commands: Note: The example will be for a system that is configured to create user home directories in the "/home" directory. $ sudo grep <file> /home/*/.* If any local initialization files are found to reference world-writable files, this is a finding.

Fix: F-32953r567674_fix

Set the mode on files being executed by the local initialization files with the following command: $ sudo chmod 0755 <file>

b
RHEL 8 must disable kernel dumps unless needed.
CM-6 - Medium - CCI-000366 - V-230310 - SV-230310r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010670
Vuln IDs
  • V-230310
Rule IDs
  • SV-230310r627750_rule
Kernel core dumps may contain the full contents of system memory at the time of the crash. Kernel core dumps may 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. RHEL 8 installation media presents the option to enable or disable the kdump service at the time of system installation.
Checks: C-32979r567676_chk

Verify that kernel core dumps are disabled unless needed with the following command: $ sudo systemctl status kdump.service kdump.service - Crash recovery kernel arming Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled) Active: active (exited) since Mon 2020-05-04 16:08:09 EDT; 3min ago Main PID: 1130 (code=exited, status=0/SUCCESS) If the "kdump" service is active, ask the System Administrator if the use of the service is required and documented with the Information System Security Officer (ISSO). If the service is active and is not documented, this is a finding.

Fix: F-32954r567677_fix

If kernel core dumps are not required, disable the "kdump" service with the following command: # systemctl disable kdump.service If kernel core dumps are required, document the need with the ISSO.

b
RHEL 8 must disable the kernel.core_pattern.
CM-6 - Medium - CCI-000366 - V-230311 - SV-230311r858769_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010671
Vuln IDs
  • V-230311
Rule IDs
  • SV-230311r858769_rule
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. The sysctl --system command will load settings from all system configuration files. All configuration files are sorted by their filename in lexicographic order, regardless of which of the directories they reside in. If multiple files specify the same option, the entry in the file with the lexicographically latest name will take precedence. Files are read from directories in the following list from top to bottom. Once a file of a given filename is loaded, any file of the same name in subsequent directories is ignored. /etc/sysctl.d/*.conf /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf
Checks: C-32980r833304_chk

Verify RHEL 8 disables storing core dumps with the following commands: $ sudo sysctl kernel.core_pattern kernel.core_pattern = |/bin/false If 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. Check that the configuration files are present to enable this kernel parameter. $ sudo grep -r kernel.core_pattern /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf /etc/sysctl.d/99-sysctl.conf:kernel.core_pattern = |/bin/false If "kernel.core_pattern" is not set to "|/bin/false", is missing or commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-32955r858768_fix

Configure RHEL 8 to disable storing core dumps. Add or edit the following line in a system configuration file, in the "/etc/sysctl.d/" directory: kernel.core_pattern = |/bin/false Remove any configurations that conflict with the above from the following locations: /run/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf /etc/sysctl.d/*.conf The system configuration files need to be reloaded for the changes to take effect. To reload the contents of the files, run the following command: $ sudo sysctl --system

b
RHEL 8 must disable acquiring, saving, and processing core dumps.
CM-6 - Medium - CCI-000366 - V-230312 - SV-230312r833308_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010672
Vuln IDs
  • V-230312
Rule IDs
  • SV-230312r833308_rule
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. 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. When the kernel invokes systemd-coredumpt to handle a core dump, it runs in privileged mode, and will connect to the socket created by the systemd-coredump.socket unit. This, in turn, will spawn an unprivileged [email protected] instance to process the core dump.
Checks: C-32981r833306_chk

Verify RHEL 8 is not configured to acquire, save, or process core dumps with the following command: $ sudo systemctl status systemd-coredump.socket systemd-coredump.socket Loaded: masked (Reason: Unit systemd-coredump.socket is masked.) Active: inactive (dead) If the "systemd-coredump.socket" is loaded and not masked and the need for core dumps is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.

Fix: F-32956r833307_fix

Configure the system to disable the systemd-coredump.socket with the following commands: $ sudo systemctl disable --now systemd-coredump.socket $ sudo systemctl mask systemd-coredump.socket Created symlink /etc/systemd/system/systemd-coredump.socket -> /dev/null Reload the daemon for this change to take effect. $ sudo systemctl daemon-reload

b
RHEL 8 must disable core dumps for all users.
CM-6 - Medium - CCI-000366 - V-230313 - SV-230313r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010673
Vuln IDs
  • V-230313
Rule IDs
  • SV-230313r627750_rule
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. 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.
Checks: C-32982r567685_chk

Verify the operating system disables core dumps for all users by issuing the following command: $ sudo grep -r -s '^[^#].*core' /etc/security/limits.conf /etc/security/limits.d/*.conf * hard core 0 This can be set as a global domain (with the * wildcard) but may be set differently for multiple domains. If the "core" item is missing, 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.

Fix: F-32957r619861_fix

Configure the operating system to disable core dumps for all users. Add the following line to the top of the /etc/security/limits.conf or in a ".conf" file defined in /etc/security/limits.d/: * hard core 0

b
RHEL 8 must disable storing core dumps.
CM-6 - Medium - CCI-000366 - V-230314 - SV-230314r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010674
Vuln IDs
  • V-230314
Rule IDs
  • SV-230314r627750_rule
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. 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.
Checks: C-32983r567688_chk

Verify the operating system disables storing core dumps for all users by issuing the following command: $ sudo grep -i storage /etc/systemd/coredump.conf Storage=none If 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.

Fix: F-32958r567689_fix

Configure the operating system to disable storing core dumps for all users. Add or modify the following line in /etc/systemd/coredump.conf: Storage=none

b
RHEL 8 must disable core dump backtraces.
CM-6 - Medium - CCI-000366 - V-230315 - SV-230315r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010675
Vuln IDs
  • V-230315
Rule IDs
  • SV-230315r627750_rule
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. 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.
Checks: C-32984r567691_chk

Verify the operating system disables core dump backtraces by issuing the following command: $ sudo grep -i ProcessSizeMax /etc/systemd/coredump.conf ProcessSizeMax=0 If 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.

Fix: F-32959r567692_fix

Configure the operating system to disable core dump backtraces. Add or modify the following line in /etc/systemd/coredump.conf: ProcessSizeMax=0

b
For RHEL 8 systems using Domain Name Servers (DNS) resolution, at least two name servers must be configured.
CM-6 - Medium - CCI-000366 - V-230316 - SV-230316r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010680
Vuln IDs
  • V-230316
Rule IDs
  • SV-230316r627750_rule
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.
Checks: C-32985r567694_chk

Determine whether the system is using local or DNS name resolution with the following command: $ sudo grep hosts /etc/nsswitch.conf hosts: files dns If the DNS entry is missing from the host's line in the "/etc/nsswitch.conf" file, the "/etc/resolv.conf" file must be empty. Verify the "/etc/resolv.conf" file is empty with the following command: $ sudo ls -al /etc/resolv.conf -rw-r--r-- 1 root root 0 Aug 19 08:31 resolv.conf If local host authentication is being used and the "/etc/resolv.conf" file is not empty, this is a finding. If the DNS entry is found on the host's line of the "/etc/nsswitch.conf" file, verify the operating system is configured to use two or more name servers for DNS resolution. Determine the name servers used by the system with the following command: $ sudo grep nameserver /etc/resolv.conf nameserver 192.168.1.2 nameserver 192.168.1.3 If less than two lines are returned that are not commented out, this is a finding.

Fix: F-32960r567695_fix

Configure the operating system to use two or more name servers for DNS resolution. By default, "NetworkManager" on RHEL 8 dynamically updates the /etc/resolv.conf file with the DNS settings from active "NetworkManager" connection profiles. However, this feature can be disabled to allow manual configurations. If manually configuring DNS, edit the "/etc/resolv.conf" file to uncomment or add the two or more "nameserver" option lines with the IP address of local authoritative name servers. If local host resolution is being performed, the "/etc/resolv.conf" file must be empty. An empty "/etc/resolv.conf" file can be created as follows: $ sudo echo -n > /etc/resolv.conf

b
Executable search paths within the initialization files of all local interactive RHEL 8 users must only contain paths that resolve to the system default or the users home directory.
CM-6 - Medium - CCI-000366 - V-230317 - SV-230317r792896_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010690
Vuln IDs
  • V-230317
Rule IDs
  • SV-230317r792896_rule
The executable search path (typically the PATH environment variable) contains a list of directories for the shell to search to find executables. If this path includes the current working directory (other than the user's home directory), executables in these directories may be executed instead of system commands. This 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).
Checks: C-32986r792895_chk

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: $ sudo grep -i path= /home/*/.* /home/[localinteractiveuser]/.bash_profile:PATH=$PATH:$HOME/.local/bin:$HOME/bin If 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.

Fix: F-32961r567698_fix

Edit the local interactive user initialization files to change any PATH variable statements that reference directories other than their home directory. If a local interactive user requires path variables to reference a directory owned by the application, it must be documented with the ISSO.

b
All RHEL 8 world-writable directories must be owned by root, sys, bin, or an application user.
CM-6 - Medium - CCI-000366 - V-230318 - SV-230318r743960_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010700
Vuln IDs
  • V-230318
Rule IDs
  • SV-230318r743960_rule
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. The 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.
Checks: C-32987r567700_chk

The following command will discover and print world-writable directories that are not owned by a system account, given the assumption that only system accounts have a uid lower than 1000. Run it once for each local partition [PART]: $ sudo find [PART] -xdev -type d -perm -0002 -uid +999 -print If there is output, this is a finding.

Fix: F-32962r567701_fix

All directories in local partitions which are world-writable should be owned by root or another system account. If any world-writable directories are not owned by a system account, this should be investigated. Following this, the files should be deleted or assigned to an appropriate group.

b
All RHEL 8 world-writable directories must be group-owned by root, sys, bin, or an application group.
CM-6 - Medium - CCI-000366 - V-230319 - SV-230319r743961_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010710
Vuln IDs
  • V-230319
Rule IDs
  • SV-230319r743961_rule
If a world-writable directory is not group-owned by root, sys, bin, or an application Group Identifier (GID), unauthorized users may be able to modify files created by others. The 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.
Checks: C-32988r567703_chk

The following command will discover and print world-writable directories that are not group-owned by a system account, given the assumption that only system accounts have a gid lower than 1000. Run it once for each local partition [PART]: $ sudo find [PART] -xdev -type d -perm -0002 -gid +999 -print If there is output, this is a finding.

Fix: F-32963r567704_fix

All directories in local partitions which are world-writable must be group-owned by root or another system account. If any world-writable directories are not group-owned by a system account, this must be investigated. Following this, the directories must be deleted or assigned to an appropriate group.

b
All RHEL 8 local interactive users must have a home directory assigned in the /etc/passwd file.
CM-6 - Medium - CCI-000366 - V-230320 - SV-230320r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010720
Vuln IDs
  • V-230320
Rule IDs
  • SV-230320r627750_rule
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.
Checks: C-32989r567706_chk

Verify local interactive users on RHEL 8 have a home directory assigned with the following command: $ sudo pwck -r user 'lp': directory '/var/spool/lpd' does not exist user 'news': directory '/var/spool/news' does not exist user 'uucp': directory '/var/spool/uucp' does not exist user 'www-data': directory '/var/www' does not exist Ask the System Administrator (SA) if any users found without home directories are local interactive users. If the SA is unable to provide a response, check for users with a User Identifier (UID) of 1000 or greater with the following command: $ sudo awk -F: '($3&gt;=1000)&amp;&amp;($7 !~ /nologin/){print $1, $3, $6}' /etc/passwd If any interactive users do not have a home directory assigned, this is a finding.

Fix: F-32964r567707_fix

Assign home directories to all local interactive users on RHEL 8 that currently do not have a home directory assigned.

b
All RHEL 8 local interactive user home directories must have mode 0750 or less permissive.
CM-6 - Medium - CCI-000366 - V-230321 - SV-230321r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010730
Vuln IDs
  • V-230321
Rule IDs
  • SV-230321r627750_rule
Excessive permissions on local interactive user home directories may allow unauthorized access to user files by other users.
Checks: C-32990r567709_chk

Verify the assigned home directory of all local interactive users has a mode of "0750" or less permissive with the following command: Note: This may miss interactive users that have been assigned a privileged User Identifier (UID). Evidence of interactive use may be obtained from a number of log files containing system logon information. $ sudo ls -ld $(awk -F: '($3&gt;=1000)&amp;&amp;($7 !~ /nologin/){print $6}' /etc/passwd) drwxr-x--- 2 smithj admin 4096 Jun 5 12:41 smithj If home directories referenced in "/etc/passwd" do not have a mode of "0750" or less permissive, this is a finding.

Fix: F-32965r567710_fix

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: Note: The example will be for the user "smithj". $ sudo chmod 0750 /home/smithj

b
All RHEL 8 local interactive user home directories must be group-owned by the home directory owner’s primary group.
CM-6 - Medium - CCI-000366 - V-230322 - SV-230322r880717_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010740
Vuln IDs
  • V-230322
Rule IDs
  • SV-230322r880717_rule
If the Group Identifier (GID) of a local interactive user’s home directory is not the same as the primary GID of the user, this would allow unauthorized access to the user’s files, and users that share the same group may not be able to access files that they legitimately should.
Checks: C-32991r880715_chk

Verify the assigned home directory of all local interactive users is group-owned by that user’s primary GID with the following command: Note: 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/smithj" is used as an example. $ sudo ls -ld $(awk -F: '($3&gt;=1000)&amp;&amp;($7 !~ /nologin/){print $6}' /etc/passwd) drwxr-x--- 2 smithj admin 4096 Jun 5 12:41 smithj Check the user's primary group with the following command: $ sudo grep $(grep smithj /etc/passwd | awk -F: '{print $4}') /etc/group admin:x:250:smithj,jonesj,jacksons If the user home directory referenced in "/etc/passwd" is not group-owned by that user’s primary GID, this is a finding.

Fix: F-32966r880716_fix

Change the group owner of a local interactive user’s home directory to the group found in "/etc/passwd". To change the group owner of a local interactive user’s home directory, use the following command: Note: The example will be for the user "smithj", who has a home directory of "/home/smithj", and has a primary group of users. $ sudo chgrp users /home/smithj

b
All RHEL 8 local interactive user home directories defined in the /etc/passwd file must exist.
CM-6 - Medium - CCI-000366 - V-230323 - SV-230323r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010750
Vuln IDs
  • V-230323
Rule IDs
  • SV-230323r627750_rule
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. This 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.
Checks: C-32992r567715_chk

Verify the assigned home directory of all local interactive users on RHEL 8 exists with the following command: $ sudo ls -ld $(awk -F: '($3&gt;=1000)&amp;&amp;($7 !~ /nologin/){print $6}' /etc/passwd) drwxr-xr-x 2 smithj admin 4096 Jun 5 12:41 smithj Note: This may miss interactive users that have been assigned a privileged User ID (UID). Evidence of interactive use may be obtained from a number of log files containing system logon information. Check that all referenced home directories exist with the following command: $ sudo pwck -r user 'smithj': directory '/home/smithj' does not exist If any home directories referenced in "/etc/passwd" are returned as not defined, this is a finding.

Fix: F-32967r567716_fix

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": Note: The example will be for the user smithj, who has a home directory of "/home/smithj", a UID of "smithj", and a Group Identifier (GID) of "users assigned" in "/etc/passwd". $ sudo mkdir /home/smithj $ sudo chown smithj /home/smithj $ sudo chgrp users /home/smithj $ sudo chmod 0750 /home/smithj

b
All RHEL 8 local interactive user accounts must be assigned a home directory upon creation.
CM-6 - Medium - CCI-000366 - V-230324 - SV-230324r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010760
Vuln IDs
  • V-230324
Rule IDs
  • SV-230324r627750_rule
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.
Checks: C-32993r567718_chk

Verify all local interactive users on RHEL 8 are assigned a home directory upon creation with the following command: $ sudo grep -i create_home /etc/login.defs CREATE_HOME yes If the value for "CREATE_HOME" parameter is not set to "yes", the line is missing, or the line is commented out, this is a finding.

Fix: F-32968r567719_fix

Configure RHEL 8 to assign home directories to all new local interactive users by setting the "CREATE_HOME" parameter in "/etc/login.defs" to "yes" as follows. CREATE_HOME yes

b
All RHEL 8 local initialization files must have mode 0740 or less permissive.
CM-6 - Medium - CCI-000366 - V-230325 - SV-230325r917879_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010770
Vuln IDs
  • V-230325
Rule IDs
  • SV-230325r917879_rule
Local initialization files are used to configure the user's shell environment upon logon. Malicious modification of these files could compromise accounts upon logon.
Checks: C-32994r917877_chk

Verify that all local initialization files have a mode of "0740" or less permissive with the following command: Note: The example will be for the "smithj" user, who has a home directory of "/home/smithj". $ sudo ls -al /home/smithj/.[^.]* | more -rw-------. 1 smithj users 2984 Apr 27 19:02 .bash_history -rw-r--r--. 1 smithj users 18 Aug 21 2019 .bash_logout -rw-r--r--. 1 smithj users 193 Aug 21 2019 .bash_profile If any local initialization files have a mode more permissive than "0740", this is a finding.

Fix: F-32969r917878_fix

Set the mode of the local initialization files to "0740" with the following command: Note: The example will be for the smithj user, who has a home directory of "/home/smithj". $ sudo chmod 0740 /home/smithj/.<INIT_FILE>

b
All RHEL 8 local files and directories must have a valid owner.
CM-6 - Medium - CCI-000366 - V-230326 - SV-230326r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010780
Vuln IDs
  • V-230326
Rule IDs
  • SV-230326r627750_rule
Unowned files and directories may be unintentionally inherited if a user is assigned the same User Identifier "UID" as the UID of the un-owned files.
Checks: C-32995r567724_chk

Verify all local files and directories on RHEL 8 have a valid owner with the following command: Note: The value after -fstype must be replaced with the filesystem type. XFS is used as an example. $ sudo find / -fstype xfs -nouser If any files on the system do not have an assigned owner, this is a finding. Note: Command may produce error messages from the /proc and /sys directories.

Fix: F-32970r567725_fix

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 RHEL 8 with the "chown" command: $ sudo chown <user> <file>

b
All RHEL 8 local files and directories must have a valid group owner.
CM-6 - Medium - CCI-000366 - V-230327 - SV-230327r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010790
Vuln IDs
  • V-230327
Rule IDs
  • SV-230327r627750_rule
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.
Checks: C-32996r567727_chk

Verify all local files and directories on RHEL 8 have a valid group with the following command: Note: The value after -fstype must be replaced with the filesystem type. XFS is used as an example. $ sudo find / -fstype xfs -nogroup If any files on the system do not have an assigned group, this is a finding. Note: Command may produce error messages from the /proc and /sys directories.

Fix: F-32971r567728_fix

Either remove all files and directories from RHEL 8 that do not have a valid group, or assign a valid group to all files and directories on the system with the "chgrp" command: $ sudo chgrp <group> <file>

b
A separate RHEL 8 filesystem must be used for user home directories (such as /home or an equivalent).
CM-6 - Medium - CCI-000366 - V-230328 - SV-230328r902723_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010800
Vuln IDs
  • V-230328
Rule IDs
  • SV-230328r902723_rule
The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing.
Checks: C-32997r902721_chk

Verify that a separate file system has been created for non-privileged local interactive user home directories. Check the home directory assignment for all non-privileged users, users with a User Identifier (UID) greater than 1000, on the system with the following command: $ sudo awk -F: '($3&gt;=1000)&amp;&amp;($7 !~ /nologin/){print $1,$3,$6}' /etc/passwd doej 1001 /home/doej publicj 1002 /home/publicj smithj 1003 /home/smithj The output of the command will give the directory/partition that contains the home directories for the non-privileged users on the system (in this example, "/home") and users’ shell. All accounts with a valid shell (such as /bin/bash) are considered interactive users. Check that a file system/partition has been created for the nonprivileged interactive users with the following command: Note: The partition of "/home" is used in the example. $ sudo grep /home /etc/fstab /dev/mapper/... /home xfs defaults,noexec,nosuid,nodev 0 0 If a separate entry for the file system/partition containing the nonprivileged interactive user home directories does not exist, this is a finding.

Fix: F-32972r902722_fix

Migrate the "/home" directory onto a separate file system.

c
Unattended or automatic logon via the RHEL 8 graphical user interface must not be allowed.
CM-6 - High - CCI-000366 - V-230329 - SV-230329r877377_rule
RMF Control
CM-6
Severity
High
CCI
CCI-000366
Version
RHEL-08-010820
Vuln IDs
  • V-230329
Rule IDs
  • SV-230329r877377_rule
Failure to restrict system access to authenticated users negatively impacts operating system security.
Checks: C-32998r567733_chk

Verify the operating system does not allow an unattended or automatic logon to the system via a graphical user interface. Note: This requirement assumes the use of the RHEL 8 default graphical user interface, Gnome Shell. If the system does not have any graphical user interface installed, this requirement is Not Applicable. Check for the value of the "AutomaticLoginEnable" in the "/etc/gdm/custom.conf" file with the following command: $ sudo grep -i automaticloginenable /etc/gdm/custom.conf AutomaticLoginEnable=false If the value of "AutomaticLoginEnable" is not set to "false", this is a finding.

Fix: F-32973r567734_fix

Configure the operating system to not allow an unattended or automatic logon to the system via a graphical user interface. Add or edit the line for the "AutomaticLoginEnable" parameter in the [daemon] section of the "/etc/gdm/custom.conf" file to "false": [daemon] AutomaticLoginEnable=false

b
RHEL 8 must not allow users to override SSH environment variables.
CM-6 - Medium - CCI-000366 - V-230330 - SV-230330r877377_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-010830
Vuln IDs
  • V-230330
Rule IDs
  • SV-230330r877377_rule
SSH environment options potentially allow users to bypass access restriction in some configurations.
Checks: C-32999r858712_chk

Verify that unattended or automatic logon via ssh is disabled with the following command: $ sudo grep -ir PermitUserEnvironment /etc/ssh/sshd_config* PermitUserEnvironment no If "PermitUserEnvironment" is set to "yes", is missing completely, or is commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-32974r567737_fix

Configure RHEL 8 to allow the SSH daemon to not allow unattended or automatic logon to the system. Add or edit the following line in the "/etc/ssh/sshd_config" file: PermitUserEnvironment no The SSH daemon must be restarted for the changes to take effect. To restart the SSH daemon, run the following command: $ sudo systemctl restart sshd.service

b
RHEL 8 temporary user accounts must be provisioned with an expiration time of 72 hours or less.
AC-2 - Medium - CCI-000016 - V-230331 - SV-230331r627750_rule
RMF Control
AC-2
Severity
Medium
CCI
CCI-000016
Version
RHEL-08-020000
Vuln IDs
  • V-230331
Rule IDs
  • SV-230331r627750_rule
If temporary user accounts remain active when no longer needed or for an excessive period, these accounts may be used to gain unauthorized access. To mitigate this risk, automated termination of all temporary accounts must be set upon account creation. Temporary accounts are established as part of normal account activation procedures when there is a need for short-term accounts without the demand for immediacy in account activation. If temporary accounts are used, RHEL 8 must be configured to automatically terminate these types of accounts after a DoD-defined time period of 72 hours. To address access requirements, many RHEL 8 operating systems may be integrated with enterprise-level authentication/access mechanisms that meet or exceed access control policy requirements.
Checks: C-33000r619865_chk

Verify that temporary accounts have been provisioned with an expiration date of 72 hours. For every existing temporary account, run the following command to obtain its account expiration information. $ sudo chage -l system_account_name Verify each of these accounts has an expiration date set within 72 hours. If any temporary accounts have no expiration date set or do not expire within 72 hours, this is a finding.

Fix: F-32975r567740_fix

If a temporary account must be created configure the system to terminate the account after a 72 hour time period with the following command to set an expiration date on it. Substitute "system_account_name" with the account to be created. $ sudo chage -E `date -d "+3 days" +%Y-%m-%d` system_account_name

b
RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur.
AC-7 - Medium - CCI-000044 - V-230332 - SV-230332r627750_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
RHEL-08-020010
Vuln IDs
  • V-230332
Rule IDs
  • SV-230332r627750_rule
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. RHEL 8 can utilize the "pam_faillock.so" for this purpose. Note that manual changes to the listed files may be overwritten by the "authselect" program. From "Pam_Faillock" man pages: Note that the default directory that "pam_faillock" uses is usually cleared on system boot so the access will be reenabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128
Checks: C-33001r567742_chk

Check that the system locks an account after three unsuccessful logon attempts with the following commands: Note: If the System Administrator demonstrates the use of an approved centralized account management method that locks an account after three unsuccessful logon attempts within a period of 15 minutes, this requirement is not applicable. Note: This check applies to RHEL versions 8.0 and 8.1, if the system is RHEL version 8.2 or newer, this check is not applicable. $ sudo grep pam_faillock.so /etc/pam.d/password-auth auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so If the "deny" option is not set to "3" or less (but not "0") on the "preauth" line with the "pam_faillock.so" module, or is missing from this line, this is a finding. If any line referencing the "pam_faillock.so" module is commented out, this is a finding. $ sudo grep pam_faillock.so /etc/pam.d/system-auth auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so If the "deny" option is not set to "3" or less (but not "0") on the "preauth" line with the "pam_faillock.so" module, or is missing from this line, this is a finding. If any line referencing the "pam_faillock.so" module is commented out, this is a finding.

Fix: F-32976r567743_fix

Configure the operating system to lock an account when three unsuccessful logon attempts occur. Add/Modify the appropriate sections of the "/etc/pam.d/system-auth" and "/etc/pam.d/password-auth" files to match the following lines: auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so The "sssd" service must be restarted for the changes to take effect. To restart the "sssd" service, run the following command: $ sudo systemctl restart sssd.service

b
RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur.
AC-7 - Medium - CCI-000044 - V-230333 - SV-230333r743966_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
RHEL-08-020011
Vuln IDs
  • V-230333
Rule IDs
  • SV-230333r743966_rule
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. In RHEL 8.2 the "/etc/security/faillock.conf" file was incorporated to centralize the configuration of the pam_faillock.so module. Also introduced is a "local_users_only" option that will only track failed user authentication attempts for local users in /etc/passwd and ignore centralized (AD, IdM, LDAP, etc.) users to allow the centralized platform to solely manage user lockout. From "faillock.conf" man pages: Note that the default directory that "pam_faillock" uses is usually cleared on system boot so the access will be reenabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128
Checks: C-33002r743964_chk

Note: This check applies to RHEL versions 8.2 or newer, if the system is RHEL version 8.0 or 8.1, this check is not applicable. Verify the "/etc/security/faillock.conf" file is configured to lock an account after three unsuccessful logon attempts: $ sudo grep 'deny =' /etc/security/faillock.conf deny = 3 If the "deny" option is not set to "3" or less (but not "0"), is missing or commented out, this is a finding.

Fix: F-32977r743965_fix

Configure the operating system to lock an account when three unsuccessful logon attempts occur. Add/Modify the "/etc/security/faillock.conf" file to match the following line: deny = 3

b
RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur during a 15-minute time period.
AC-7 - Medium - CCI-000044 - V-230334 - SV-230334r627750_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
RHEL-08-020012
Vuln IDs
  • V-230334
Rule IDs
  • SV-230334r627750_rule
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. RHEL 8 can utilize the "pam_faillock.so" for this purpose. Note that manual changes to the listed files may be overwritten by the "authselect" program. From "Pam_Faillock" man pages: Note that the default directory that "pam_faillock" uses is usually cleared on system boot so the access will be reenabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128
Checks: C-33003r567748_chk

Check that the system locks an account after three unsuccessful logon attempts within a period of 15 minutes with the following commands: Note: If the System Administrator demonstrates the use of an approved centralized account management method that locks an account after three unsuccessful logon attempts within a period of 15 minutes, this requirement is not applicable. Note: This check applies to RHEL versions 8.0 and 8.1, if the system is RHEL version 8.2 or newer, this check is not applicable. $ sudo grep pam_faillock.so /etc/pam.d/password-auth auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so If the "fail_interval" option is not set to "900" or less (but not "0") on the "preauth" lines with the "pam_faillock.so" module, or is missing from this line, this is a finding. $ sudo grep pam_faillock.so /etc/pam.d/system-auth auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so If the "fail_interval" option is not set to "900" or less (but not "0") on the "preauth" lines with the "pam_faillock.so" module, or is missing from this line, this is a finding.

Fix: F-32978r567749_fix

Configure the operating system to lock an account when three unsuccessful logon attempts occur in 15 minutes. Add/Modify the appropriate sections of the "/etc/pam.d/system-auth" and "/etc/pam.d/password-auth" files to match the following lines: auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so The "sssd" service must be restarted for the changes to take effect. To restart the "sssd" service, run the following command: $ sudo systemctl restart sssd.service

b
RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur during a 15-minute time period.
AC-7 - Medium - CCI-000044 - V-230335 - SV-230335r743969_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
RHEL-08-020013
Vuln IDs
  • V-230335
Rule IDs
  • SV-230335r743969_rule
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. In RHEL 8.2 the "/etc/security/faillock.conf" file was incorporated to centralize the configuration of the pam_faillock.so module. Also introduced is a "local_users_only" option that will only track failed user authentication attempts for local users in /etc/passwd and ignore centralized (AD, IdM, LDAP, etc.) users to allow the centralized platform to solely manage user lockout. From "faillock.conf" man pages: Note that the default directory that "pam_faillock" uses is usually cleared on system boot so the access will be reenabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128
Checks: C-33004r743967_chk

Note: This check applies to RHEL versions 8.2 or newer, if the system is RHEL version 8.0 or 8.1, this check is not applicable. Verify the "/etc/security/faillock.conf" file is configured to lock an account after three unsuccessful logon attempts within 15 minutes: $ sudo grep 'fail_interval =' /etc/security/faillock.conf fail_interval = 900 If the "fail_interval" option is not set to "900" or more, is missing or commented out, this is a finding.

Fix: F-32979r743968_fix

Configure the operating system to lock an account when three unsuccessful logon attempts occur in 15 minutes. Add/Modify the "/etc/security/faillock.conf" file to match the following line: fail_interval = 900

b
RHEL 8 must automatically lock an account until the locked account is released by an administrator when three unsuccessful logon attempts occur during a 15-minute time period.
AC-7 - Medium - CCI-000044 - V-230336 - SV-230336r627750_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
RHEL-08-020014
Vuln IDs
  • V-230336
Rule IDs
  • SV-230336r627750_rule
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. RHEL 8 can utilize the "pam_faillock.so" for this purpose. Note that manual changes to the listed files may be overwritten by the "authselect" program. From "Pam_Faillock" man pages: Note that the default directory that "pam_faillock" uses is usually cleared on system boot so the access will be reenabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128
Checks: C-33005r567754_chk

Check that the system locks an account after three unsuccessful logon attempts within a period of 15 minutes until released by an administrator with the following commands: Note: If the System Administrator demonstrates the use of an approved centralized account management method that locks an account after three unsuccessful logon attempts within a period of 15 minutes, this requirement is not applicable. Note: This check applies to RHEL versions 8.0 and 8.1, if the system is RHEL version 8.2 or newer, this check is not applicable. $ sudo grep pam_faillock.so /etc/pam.d/password-auth auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so If the "unlock_time" option is not set to "0" on the "preauth" and "authfail" lines with the "pam_faillock.so" module, or is missing from these lines, this is a finding. $ sudo grep pam_faillock.so /etc/pam.d/system-auth auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so If the "unlock_time" option is not set to "0" on the "preauth" and "authfail" lines with the "pam_faillock.so" module, or is missing from these lines, this is a finding.

Fix: F-32980r567755_fix

Configure the operating system to lock an account until released by an administrator when three unsuccessful logon attempts occur in 15 minutes. Add/Modify the appropriate sections of the "/etc/pam.d/system-auth" and "/etc/pam.d/password-auth" files to match the following lines: auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so The "sssd" service must be restarted for the changes to take effect. To restart the "sssd" service, run the following command: $ sudo systemctl restart sssd.service

b
RHEL 8 must automatically lock an account until the locked account is released by an administrator when three unsuccessful logon attempts occur during a 15-minute time period.
AC-7 - Medium - CCI-000044 - V-230337 - SV-230337r743972_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
RHEL-08-020015
Vuln IDs
  • V-230337
Rule IDs
  • SV-230337r743972_rule
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. In RHEL 8.2 the "/etc/security/faillock.conf" file was incorporated to centralize the configuration of the pam_faillock.so module. Also introduced is a "local_users_only" option that will only track failed user authentication attempts for local users in /etc/passwd and ignore centralized (AD, IdM, LDAP, etc.) users to allow the centralized platform to solely manage user lockout. From "faillock.conf" man pages: Note that the default directory that "pam_faillock" uses is usually cleared on system boot so the access will be reenabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128
Checks: C-33006r743970_chk

Note: This check applies to RHEL versions 8.2 or newer, if the system is RHEL version 8.0 or 8.1, this check is not applicable. Verify the "/etc/security/faillock.conf" file is configured to lock an account until released by an administrator after three unsuccessful logon attempts: $ sudo grep 'unlock_time =' /etc/security/faillock.conf unlock_time = 0 If the "unlock_time" option is not set to "0", is missing or commented out, this is a finding.

Fix: F-32981r743971_fix

Configure the operating system to lock an account until released by an administrator when three unsuccessful logon attempts occur in 15 minutes. Add/Modify the "/etc/security/faillock.conf" file to match the following line: unlock_time = 0

b
RHEL 8 must ensure account lockouts persist.
AC-7 - Medium - CCI-000044 - V-230338 - SV-230338r627750_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
RHEL-08-020016
Vuln IDs
  • V-230338
Rule IDs
  • SV-230338r627750_rule
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. RHEL 8 can utilize the "pam_faillock.so" for this purpose. Note that manual changes to the listed files may be overwritten by the "authselect" program. From "Pam_Faillock" man pages: Note that the default directory that "pam_faillock" uses is usually cleared on system boot so the access will be reenabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128
Checks: C-33007r567760_chk

Check that the faillock directory contents persists after a reboot with the following commands: Note: If the System Administrator demonstrates the use of an approved centralized account management method that locks an account after three unsuccessful logon attempts within a period of 15 minutes, this requirement is not applicable. Note: This check applies to RHEL versions 8.0 and 8.1, if the system is RHEL version 8.2 or newer, this check is not applicable. $ sudo grep pam_faillock.so /etc/pam.d/password-auth auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so If the "dir" option is not set to a non-default documented tally log directory on the "preauth" and "authfail" lines with the "pam_faillock.so" module, or is missing from these lines, this is a finding. $ sudo grep pam_faillock.so /etc/pam.d/system-auth auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so If the "dir" option is not set to a non-default documented tally log directory on the "preauth" and "authfail" lines with the "pam_faillock.so" module, or is missing from these lines, this is a finding.

Fix: F-32982r567761_fix

Configure the operating system maintain the contents of the faillock directory after a reboot. Add/Modify the appropriate sections of the "/etc/pam.d/system-auth" and "/etc/pam.d/password-auth" files to match the following lines: Note: Using the default faillock directory of /var/run/faillock will result in the contents being cleared in the event of a reboot. auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so The "sssd" service must be restarted for the changes to take effect. To restart the "sssd" service, run the following command: $ sudo systemctl restart sssd.service

b
RHEL 8 must ensure account lockouts persist.
AC-7 - Medium - CCI-000044 - V-230339 - SV-230339r743975_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
RHEL-08-020017
Vuln IDs
  • V-230339
Rule IDs
  • SV-230339r743975_rule
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. In RHEL 8.2 the "/etc/security/faillock.conf" file was incorporated to centralize the configuration of the pam_faillock.so module. Also introduced is a "local_users_only" option that will only track failed user authentication attempts for local users in /etc/passwd and ignore centralized (AD, IdM, LDAP, etc.) users to allow the centralized platform to solely manage user lockout. From "faillock.conf" man pages: Note that the default directory that "pam_faillock" uses is usually cleared on system boot so the access will be reenabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128
Checks: C-33008r743973_chk

Note: This check applies to RHEL versions 8.2 or newer. If the system is RHEL version 8.0 or 8.1, this check is not applicable. Verify the "/etc/security/faillock.conf" file is configured use a non-default faillock directory to ensure contents persist after reboot: $ sudo grep 'dir =' /etc/security/faillock.conf dir = /var/log/faillock If the "dir" option is not set to a non-default documented tally log directory, is missing or commented out, this is a finding.

Fix: F-32983r743974_fix

Configure the operating system maintain the contents of the faillock directory after a reboot. Add/Modify the "/etc/security/faillock.conf" file to match the following line: dir = /var/log/faillock

b
RHEL 8 must prevent system messages from being presented when three unsuccessful logon attempts occur.
AC-7 - Medium - CCI-000044 - V-230340 - SV-230340r627750_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
RHEL-08-020018
Vuln IDs
  • V-230340
Rule IDs
  • SV-230340r627750_rule
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. RHEL 8 can utilize the "pam_faillock.so" for this purpose. Note that manual changes to the listed files may be overwritten by the "authselect" program. From "Pam_Faillock" man pages: Note that the default directory that "pam_faillock" uses is usually cleared on system boot so the access will be reenabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128
Checks: C-33009r567766_chk

Check that the system prevents informative messages from being presented to the user pertaining to logon information with the following commands: Note: If the System Administrator demonstrates the use of an approved centralized account management method that locks an account after three unsuccessful logon attempts within a period of 15 minutes, this requirement is not applicable. Note: This check applies to RHEL versions 8.0 and 8.1, if the system is RHEL version 8.2 or newer, this check is not applicable. $ sudo grep pam_faillock.so /etc/pam.d/password-auth auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so If the "silent" option is missing from the "preauth" line with the "pam_faillock.so" module, this is a finding. $ sudo grep pam_faillock.so /etc/pam.d/system-auth auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so If the "silent" option is missing from the "preauth" line with the "pam_faillock.so" module, this is a finding.

Fix: F-32984r567767_fix

Configure the operating system to prevent informative messages from being presented at logon attempts. Add/Modify the appropriate sections of the "/etc/pam.d/system-auth" and "/etc/pam.d/password-auth" files to match the following lines: auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so The "sssd" service must be restarted for the changes to take effect. To restart the "sssd" service, run the following command: $ sudo systemctl restart sssd.service

b
RHEL 8 must prevent system messages from being presented when three unsuccessful logon attempts occur.
AC-7 - Medium - CCI-000044 - V-230341 - SV-230341r743978_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
RHEL-08-020019
Vuln IDs
  • V-230341
Rule IDs
  • SV-230341r743978_rule
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. In RHEL 8.2 the "/etc/security/faillock.conf" file was incorporated to centralize the configuration of the pam_faillock.so module. Also introduced is a "local_users_only" option that will only track failed user authentication attempts for local users in /etc/passwd and ignore centralized (AD, IdM, LDAP, etc.) users to allow the centralized platform to solely manage user lockout. From "faillock.conf" man pages: Note that the default directory that "pam_faillock" uses is usually cleared on system boot so the access will be reenabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128
Checks: C-33010r743976_chk

Note: This check applies to RHEL versions 8.2 or newer, if the system is RHEL version 8.0 or 8.1, this check is not applicable. Verify the "/etc/security/faillock.conf" file is configured to prevent informative messages from being presented at logon attempts: $ sudo grep silent /etc/security/faillock.conf silent If the "silent" option is not set, is missing or commented out, this is a finding.

Fix: F-32985r743977_fix

Configure the operating system to prevent informative messages from being presented at logon attempts. Add/Modify the "/etc/security/faillock.conf" file to match the following line: silent

b
RHEL 8 must log user name information when unsuccessful logon attempts occur.
AC-7 - Medium - CCI-000044 - V-230342 - SV-230342r646872_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
RHEL-08-020020
Vuln IDs
  • V-230342
Rule IDs
  • SV-230342r646872_rule
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. RHEL 8 can utilize the "pam_faillock.so" for this purpose. Note that manual changes to the listed files may be overwritten by the "authselect" program. From "Pam_Faillock" man pages: Note that the default directory that "pam_faillock" uses is usually cleared on system boot so the access will be reenabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. In RHEL 8.2 the "/etc/security/faillock.conf" file was incorporated to centralize the configuration of the pam_faillock.so module. Also introduced is a "local_users_only" option that will only track failed user authentication attempts for local users in /etc/passwd and ignore centralized (AD, IdM, LDAP, etc.) users to allow the centralized platform to solely manage user lockout. Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128
Checks: C-33011r646871_chk

Check that the system logs user name information when unsuccessful logon attempts occur with the following commands: If the system is RHEL version 8.2 or newer, this check is not applicable. Note: If the System Administrator demonstrates the use of an approved centralized account management method that locks an account after three unsuccessful logon attempts within a period of 15 minutes, this requirement is not applicable. $ sudo grep pam_faillock.so /etc/pam.d/password-auth auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so If the "audit" option is missing from the "preauth" line with the "pam_faillock.so" module, this is a finding. $ sudo grep pam_faillock.so /etc/pam.d/system-auth auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so If the "audit" option is missing from the "preauth" line with the "pam_faillock.so" module, this is a finding.

Fix: F-32986r567773_fix

Configure the operating system to log user name information when unsuccessful logon attempts occur. Add/Modify the appropriate sections of the "/etc/pam.d/system-auth" and "/etc/pam.d/password-auth" files to match the following lines: auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so The "sssd" service must be restarted for the changes to take effect. To restart the "sssd" service, run the following command: $ sudo systemctl restart sssd.service

b
RHEL 8 must log user name information when unsuccessful logon attempts occur.
AC-7 - Medium - CCI-000044 - V-230343 - SV-230343r743981_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
RHEL-08-020021
Vuln IDs
  • V-230343
Rule IDs
  • SV-230343r743981_rule
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. In RHEL 8.2 the "/etc/security/faillock.conf" file was incorporated to centralize the configuration of the pam_faillock.so module. Also introduced is a "local_users_only" option that will only track failed user authentication attempts for local users in /etc/passwd and ignore centralized (AD, IdM, LDAP, etc.) users to allow the centralized platform to solely manage user lockout. From "faillock.conf" man pages: Note that the default directory that "pam_faillock" uses is usually cleared on system boot so the access will be reenabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128
Checks: C-33012r743979_chk

Note: This check applies to RHEL versions 8.2 or newer, if the system is RHEL version 8.0 or 8.1, this check is not applicable. Verify the "/etc/security/faillock.conf" file is configured to log user name information when unsuccessful logon attempts occur: $ sudo grep audit /etc/security/faillock.conf audit If the "audit" option is not set, is missing or commented out, this is a finding.

Fix: F-32987r743980_fix

Configure the operating system to log user name information when unsuccessful logon attempts occur. Add/Modify the "/etc/security/faillock.conf" file to match the following line: audit

b
RHEL 8 must include root when automatically locking an account until the locked account is released by an administrator when three unsuccessful logon attempts occur during a 15-minute time period.
AC-7 - Medium - CCI-000044 - V-230344 - SV-230344r646874_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
RHEL-08-020022
Vuln IDs
  • V-230344
Rule IDs
  • SV-230344r646874_rule
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. RHEL 8 can utilize the "pam_faillock.so" for this purpose. Note that manual changes to the listed files may be overwritten by the "authselect" program. From "Pam_Faillock" man pages: Note that the default directory that "pam_faillock" uses is usually cleared on system boot so the access will be reenabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. In RHEL 8.2 the "/etc/security/faillock.conf" file was incorporated to centralize the configuration of the pam_faillock.so module. Also introduced is a "local_users_only" option that will only track failed user authentication attempts for local users in /etc/passwd and ignore centralized (AD, IdM, LDAP, etc.) users to allow the centralized platform to solely manage user lockout. Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128
Checks: C-33013r646873_chk

Check that the system includes the root account when locking an account after three unsuccessful logon attempts within a period of 15 minutes with the following commands: If the system is RHEL version 8.2 or newer, this check is not applicable. Note: If the System Administrator demonstrates the use of an approved centralized account management method that locks an account after three unsuccessful logon attempts within a period of 15 minutes, this requirement is not applicable. $ sudo grep pam_faillock.so /etc/pam.d/password-auth auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so If the "even_deny_root" option is missing from the "preauth" line with the "pam_faillock.so" module, this is a finding. $ sudo grep pam_faillock.so /etc/pam.d/system-auth auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so If the "even_deny_root" option is missing from the "preauth" line with the "pam_faillock.so" module, this is a finding.

Fix: F-32988r567779_fix

Configure the operating system to include root when locking an account after three unsuccessful logon attempts occur in 15 minutes. Add/Modify the appropriate sections of the "/etc/pam.d/system-auth" and "/etc/pam.d/password-auth" files to match the following lines: auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 even_deny_root fail_interval=900 unlock_time=0 auth required pam_faillock.so authfail dir=/var/log/faillock unlock_time=0 account required pam_faillock.so The "sssd" service must be restarted for the changes to take effect. To restart the "sssd" service, run the following command: $ sudo systemctl restart sssd.service

b
RHEL 8 must include root when automatically locking an account until the locked account is released by an administrator when three unsuccessful logon attempts occur during a 15-minute time period.
AC-7 - Medium - CCI-000044 - V-230345 - SV-230345r743984_rule
RMF Control
AC-7
Severity
Medium
CCI
CCI-000044
Version
RHEL-08-020023
Vuln IDs
  • V-230345
Rule IDs
  • SV-230345r743984_rule
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. In RHEL 8.2 the "/etc/security/faillock.conf" file was incorporated to centralize the configuration of the pam_faillock.so module. Also introduced is a "local_users_only" option that will only track failed user authentication attempts for local users in /etc/passwd and ignore centralized (AD, IdM, LDAP, etc.) users to allow the centralized platform to solely manage user lockout. From "faillock.conf" man pages: Note that the default directory that "pam_faillock" uses is usually cleared on system boot so the access will be reenabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128
Checks: C-33014r743982_chk

Note: This check applies to RHEL versions 8.2 or newer, if the system is RHEL version 8.0 or 8.1, this check is not applicable. Verify the "/etc/security/faillock.conf" file is configured to log user name information when unsuccessful logon attempts occur: $ sudo grep even_deny_root /etc/security/faillock.conf even_deny_root If the "even_deny_root" option is not set, is missing or commented out, this is a finding.

Fix: F-32989r743983_fix

Configure the operating system to include root when locking an account after three unsuccessful logon attempts occur in 15 minutes. Add/Modify the "/etc/security/faillock.conf" file to match the following line: even_deny_root

a
RHEL 8 must limit the number of concurrent sessions to ten for all accounts and/or account types.
AC-10 - Low - CCI-000054 - V-230346 - SV-230346r877399_rule
RMF Control
AC-10
Severity
Low
CCI
CCI-000054
Version
RHEL-08-020024
Vuln IDs
  • V-230346
Rule IDs
  • SV-230346r877399_rule
Operating system management includes the ability to control the number of users and user sessions that utilize an operating system. Limiting the number of allowed users and sessions per user is helpful in reducing the risks related to DoS attacks. This requirement addresses concurrent sessions for information system accounts and does not address concurrent sessions by single users via multiple system accounts. The maximum number of concurrent sessions should be defined based on mission needs and the operational environment for each system.
Checks: C-33015r567784_chk

Verify the operating system limits the number of concurrent sessions to "10" for all accounts and/or account types by issuing the following command: $ sudo grep -r -s '^[^#].*maxlogins' /etc/security/limits.conf /etc/security/limits.d/*.conf * hard maxlogins 10 This can be set as a global domain (with the * wildcard) but may be set differently for multiple domains. If the "maxlogins" item is missing, commented out, or the value is set greater than "10" and is not documented with the Information System Security Officer (ISSO) as an operational requirement for all domains that have the "maxlogins" item assigned, this is a finding.

Fix: F-32990r619863_fix

Configure the operating system to limit the number of concurrent sessions to "10" for all accounts and/or account types. Add the following line to the top of the /etc/security/limits.conf or in a ".conf" file defined in /etc/security/limits.d/: * hard maxlogins 10

b
RHEL 8 must enable a user session lock until that user re-establishes access using established identification and authentication procedures for graphical user sessions.
AC-11 - Medium - CCI-000056 - V-230347 - SV-230347r627750_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000056
Version
RHEL-08-020030
Vuln IDs
  • V-230347
Rule IDs
  • SV-230347r627750_rule
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. The session lock is implemented at the point where session activity can be determined. Regardless of where the session lock is determined and implemented, once invoked, the session lock must remain in place until the user reauthenticates. No other activity aside from reauthentication must unlock the system. Satisfies: SRG-OS-000028-GPOS-00009, SRG-OS-000030-GPOS-00011
Checks: C-33016r567787_chk

Verify the operating system enables a user's session lock until that user re-establishes access using established identification and authentication procedures with the following command: $ sudo gsettings get org.gnome.desktop.screensaver lock-enabled true If the setting is "false", this is a finding. Note: This requirement assumes the use of the RHEL 8 default graphical user interface, Gnome Shell. If the system does not have any graphical user interface installed, this requirement is Not Applicable.

Fix: F-32991r567788_fix

Configure the operating system to enable a user's session lock until that user re-establishes access using established identification and authentication procedures. Create a database to contain the system-wide screensaver settings (if it does not already exist) with the following example: $ sudo vi /etc/dconf/db/local.d/00-screensaver Edit the "[org/gnome/desktop/screensaver]" section of the database file and add or update the following lines: # Set this to true to lock the screen when the screensaver activates lock-enabled=true Update the system databases: $ sudo dconf update

b
RHEL 8 must enable a user session lock until that user re-establishes access using established identification and authentication procedures for command line sessions.
AC-11 - Medium - CCI-000056 - V-230348 - SV-230348r902725_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000056
Version
RHEL-08-020040
Vuln IDs
  • V-230348
Rule IDs
  • SV-230348r902725_rule
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. The session lock is implemented at the point where session activity can be determined. Rather than be forced to wait for a period of time to expire before the user session can be locked, RHEL 8 needs to provide users with the ability to manually invoke a session lock so users can secure their session if it is necessary to temporarily vacate the immediate physical vicinity. Tmux is a terminal multiplexer that enables a number of terminals to be created, accessed, and controlled from a single screen. Red Hat endorses tmux as the recommended session controlling package. Satisfies: SRG-OS-000028-GPOS-00009, SRG-OS-000030-GPOS-00011
Checks: C-33017r902724_chk

Verify the operating system enables the user to manually initiate a session lock with the following command: $ sudo grep -Ei 'lock-command|lock-session' /etc/tmux.conf set -g lock-command vlock bind X lock-session If the "lock-command" is not set and "lock-session" is not bound to a specific keyboard key in the global settings, this is a finding.

Fix: F-32992r880719_fix

Configure the operating system to enable a user to manually initiate a session lock via tmux. This configuration binds the uppercase letter "X" to manually initiate a session lock after the prefix key "Ctrl + b" has been sent. The complete key sequence is thus "Ctrl + b" then "Shift + x" to lock tmux. Create a global configuration file "/etc/tmux.conf" and add the following lines: set -g lock-command vlock bind X lock-session Reload tmux configuration to take effect. This can be performed in tmux while it is running: $ tmux source-file /etc/tmux.conf

b
RHEL 8 must ensure session control is automatically started at shell initialization.
AC-11 - Medium - CCI-000056 - V-230349 - SV-230349r917920_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000056
Version
RHEL-08-020041
Vuln IDs
  • V-230349
Rule IDs
  • SV-230349r917920_rule
Tmux is a terminal multiplexer that enables a number of terminals to be created, accessed, and controlled from a single screen. Red Hat endorses tmux as the recommended session controlling package. Satisfies: SRG-OS-000028-GPOS-00009, SRG-OS-000030-GPOS-00011
Checks: C-33018r880734_chk

Verify the operating system shell initialization file is configured to start each shell with the tmux terminal multiplexer with the following commands: Determine if tmux is currently running: $ sudo ps all | grep tmux | grep -v grep If the command does not produce output, this is a finding. Determine the location of the tmux script: $ sudo grep -r tmux /etc/bashrc /etc/profile.d /etc/profile.d/tmux.sh: case "$name" in (sshd|login) tmux ;; esac Review the tmux script by using the following example: $ sudo cat /etc/profile.d/tmux.sh if [ "$PS1" ]; then parent=$(ps -o ppid= -p $$) name=$(ps -o comm= -p $parent) case "$name" in (sshd|login) tmux ;; esac fi If "tmux" is not configured as the example above, is commented out, or is missing, this is a finding.

Fix: F-32993r880735_fix

Configure the operating system to initialize the tmux terminal multiplexer as each shell is called by adding the following lines to a custom.sh shell script in the /etc/profile.d/ directory: if [ "$PS1" ]; then parent=$(ps -o ppid= -p $$) name=$(ps -o comm= -p $parent) case "$name" in (sshd|login) tmux ;; esac fi This setting will take effect at next logon.

a
RHEL 8 must prevent users from disabling session control mechanisms.
AC-11 - Low - CCI-000056 - V-230350 - SV-230350r627750_rule
RMF Control
AC-11
Severity
Low
CCI
CCI-000056
Version
RHEL-08-020042
Vuln IDs
  • V-230350
Rule IDs
  • SV-230350r627750_rule
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. The session lock is implemented at the point where session activity can be determined. Rather than be forced to wait for a period of time to expire before the user session can be locked, RHEL 8 needs to provide users with the ability to manually invoke a session lock so users can secure their session if it is necessary to temporarily vacate the immediate physical vicinity. Tmux is a terminal multiplexer that enables a number of terminals to be created, accessed, and controlled from a single screen. Red Hat endorses tmux as the recommended session controlling package. Satisfies: SRG-OS-000028-GPOS-00009, SRG-OS-000030-GPOS-00011
Checks: C-33019r567796_chk

Verify the operating system prevents users from disabling the tmux terminal multiplexer with the following command: $ sudo grep -i tmux /etc/shells If any output is produced, this is a finding.

Fix: F-32994r567797_fix

Configure the operating system to prevent users from disabling the tmux terminal multiplexer by editing the "/etc/shells" configuration file to remove any instances of tmux.

b
RHEL 8 must be able to initiate directly a session lock for all connection types using smartcard when the smartcard is removed.
AC-11 - Medium - CCI-000056 - V-230351 - SV-230351r792899_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000056
Version
RHEL-08-020050
Vuln IDs
  • V-230351
Rule IDs
  • SV-230351r792899_rule
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. The session lock is implemented at the point where session activity can be determined. Rather than be forced to wait for a period of time to expire before the user session can be locked, RHEL 8 needs to provide users with the ability to manually invoke a session lock so users can secure their session if it is necessary to temporarily vacate the immediate physical vicinity. Satisfies: SRG-OS-000028-GPOS-00009, SRG-OS-000030-GPOS-00011
Checks: C-33020r792897_chk

Verify the operating system enables a user's session lock until that user re-establishes access using established identification and authentication procedures with the following command: This requirement assumes the use of the RHEL 8 default graphical user interface, Gnome Shell. If the system does not have any graphical user interface installed, this requirement is Not Applicable. $ sudo grep -R removal-action /etc/dconf/db/* /etc/dconf/db/distro.d/20-authselect:removal-action='lock-screen' If the "removal-action='lock-screen'" setting is missing or commented out from the dconf database files, this is a finding.

Fix: F-32995r792898_fix

Configure the operating system to enable a user's session lock until that user re-establishes access using established identification and authentication procedures. Select/Create an authselect profile and incorporate the "with-smartcard-lock-on-removal" feature with the following example: $ sudo authselect select sssd with-smartcard with-smartcard-lock-on-removal Alternatively, the dconf settings can be edited in the /etc/dconf/db/* location. Edit or add the "[org/gnome/settings-daemon/peripherals/smartcard]" section of the database file and add or update the following lines: removal-action='lock-screen' Update the system databases: $ sudo dconf update

b
RHEL 8 must automatically lock graphical user sessions after 15 minutes of inactivity.
AC-11 - Medium - CCI-000057 - V-230352 - SV-230352r646876_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000057
Version
RHEL-08-020060
Vuln IDs
  • V-230352
Rule IDs
  • SV-230352r646876_rule
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. The session lock is implemented at the point where session activity can be determined. Rather than be forced to wait for a period of time to expire before the user session can be locked, RHEL 8 needs to provide users with the ability to manually invoke a session lock so users can secure their session if it is necessary to temporarily vacate the immediate physical vicinity. Satisfies: SRG-OS-000029-GPOS-00010, SRG-OS-000031-GPOS-00012
Checks: C-33021r646875_chk

Verify the operating system initiates a session lock after a 15-minute period of inactivity for graphical user interfaces with the following commands: This requirement assumes the use of the RHEL 8 default graphical user interface, Gnome Shell. If the system does not have any graphical user interface installed, this requirement is Not Applicable. $ sudo gsettings get org.gnome.desktop.session idle-delay uint32 900 If "idle-delay" is set to "0" or a value greater than "900", this is a finding.

Fix: F-32996r567803_fix

Configure the operating system to initiate a screensaver after a 15-minute period of inactivity for graphical user interfaces. Create a database to contain the system-wide screensaver settings (if it does not already exist) with the following command: $ sudo touch /etc/dconf/db/local.d/00-screensaver Edit /etc/dconf/db/local.d/00-screensaver and add or update the following lines: [org/gnome/desktop/session] # Set the lock time out to 900 seconds before the session is considered idle idle-delay=uint32 900 Update the system databases: $ sudo dconf update

b
RHEL 8 must automatically lock command line user sessions after 15 minutes of inactivity.
AC-11 - Medium - CCI-000057 - V-230353 - SV-230353r627750_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000057
Version
RHEL-08-020070
Vuln IDs
  • V-230353
Rule IDs
  • SV-230353r627750_rule
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. Terminating 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 the operating system terminates all sessions or network access; it only ends the inactive session and releases the resources associated with that session. Satisfies: SRG-OS-000029-GPOS-00010, SRG-OS-000031-GPOS-00012
Checks: C-33022r567805_chk

Verify the operating system initiates a session lock after 15 minutes of inactivity. Check the value of the system inactivity timeout with the following command: $ sudo grep -i lock-after-time /etc/tmux.conf set -g lock-after-time 900 If "lock-after-time" is not set to "900" or less in the global tmux configuration file to enforce session lock after inactivity, this is a finding.

Fix: F-32997r567806_fix

Configure the operating system to enforce session lock after a period of 15 minutes of inactivity by adding the following line to the "/etc/tmux.conf" global configuration file: set -g lock-after-time 900

b
RHEL 8 must prevent a user from overriding the session lock-delay setting for the graphical user interface.
AC-11 - Medium - CCI-000057 - V-230354 - SV-230354r743990_rule
RMF Control
AC-11
Severity
Medium
CCI
CCI-000057
Version
RHEL-08-020080
Vuln IDs
  • V-230354
Rule IDs
  • SV-230354r743990_rule
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 log out because of the temporary nature of the absence. Rather than relying on the user to manually lock their operating system session prior to vacating the vicinity, operating systems need to be able to identify when a user's session has idled and take action to initiate the session lock. The session lock is implemented at the point where session activity can be determined and/or controlled. Implementing session settings will have little value if a user is able to manipulate these settings from the defaults prescribed in the other requirements of this implementation guide. Locking these settings from non-privileged users is crucial to maintaining a protected baseline. Satisfies: SRG-OS-000029-GPOS-00010, SRG-OS-000031-GPOS-00012, SRG-OS-000480-GPOS-00227
Checks: C-33023r743988_chk

Verify the operating system prevents a user from overriding settings for graphical user interfaces. Note: This requirement assumes the use of the RHEL 8 default graphical user interface, Gnome Shell. If the system does not have any graphical user interface installed, this requirement is Not Applicable. Determine which profile the system database is using with the following command: $ sudo grep system-db /etc/dconf/profile/user system-db:local Check that graphical settings are locked from non-privileged user modification with the following command: Note: The example below is using the database "local" for the system, so the path is "/etc/dconf/db/local.d". This path must be modified if a database other than "local" is being used. $ sudo grep -i lock-delay /etc/dconf/db/local.d/locks/* /org/gnome/desktop/screensaver/lock-delay If the command does not return at least the example result, this is a finding.

Fix: F-32998r743989_fix

Configure the operating system to prevent a user from overriding settings for graphical user interfaces. Create a database to contain the system-wide screensaver settings (if it does not already exist) with the following command: Note: 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. $ sudo touch /etc/dconf/db/local.d/locks/session Add the following setting to prevent non-privileged users from modifying it: /org/gnome/desktop/screensaver/lock-delay

b
RHEL 8 must map the authenticated identity to the user or group account for PKI-based authentication.
IA-5 - Medium - CCI-000187 - V-230355 - SV-230355r858743_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000187
Version
RHEL-08-020090
Vuln IDs
  • V-230355
Rule IDs
  • SV-230355r858743_rule
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. There are various methods of mapping certificates to user/group accounts for RHEL 8. For the purposes of this requirement, the check and fix will account for Active Directory mapping. Some of the other possible methods include joining the system to a domain and utilizing a Red Hat idM server, or a local system mapping, where the system is not part of a domain.
Checks: C-33024r858742_chk

Verify the certificate of the user or group is mapped to the corresponding user or group in the "sssd.conf" file with the following command: Note: If the System Administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable. $ sudo cat /etc/sssd/sssd.conf [sssd] config_file_version = 2 services = pam, sudo, ssh domains = testing.test [pam] pam_cert_auth = True [domain/testing.test] id_provider = ldap [certmap/testing.test/rule_name] matchrule =&lt;SAN&gt;.*EDIPI@mil maprule = (userCertificate;binary={cert!bin}) domains = testing.test If the certmap section does not exist, ask the System Administrator to indicate how certificates are mapped to accounts. If there is no evidence of certificate mapping, this is a finding.

Fix: F-32999r818835_fix

Configure the operating system to map the authenticated identity to the user or group account by adding or modifying the certmap section of the "/etc/sssd/sssd.conf file based on the following example: [certmap/testing.test/rule_name] matchrule =<SAN>.*EDIPI@mil maprule = (userCertificate;binary={cert!bin}) domains = testing.test The "sssd" service must be restarted for the changes to take effect. To restart the "sssd" service, run the following command: $ sudo systemctl restart sssd.service

b
RHEL 8 must ensure the password complexity module is enabled in the password-auth file.
CM-6 - Medium - CCI-000366 - V-230356 - SV-230356r902728_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-020100
Vuln IDs
  • V-230356
Rule IDs
  • SV-230356r902728_rule
Use of a complex password helps to increase the time and resources required to compromise the password. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. "pwquality" enforces complex password construction configuration and has the ability to limit brute-force attacks on the system. RHEL 8 utilizes "pwquality" as a mechanism to enforce password complexity. This is set in both: /etc/pam.d/password-auth /etc/pam.d/system-auth
Checks: C-33025r902726_chk

Verify the operating system uses "pwquality" to enforce the password complexity rules. Check for the use of "pwquality" in the password-auth file with the following command: $ sudo cat /etc/pam.d/password-auth | grep pam_pwquality password requisite pam_pwquality.so If the command does not return a line containing the value "pam_pwquality.so" as shown, or the line is commented out, this is a finding.

Fix: F-33000r902727_fix

Configure the operating system to use "pwquality" to enforce password complexity rules. Add the following line to the "/etc/pam.d/password-auth" file (or modify the line to have the required value): password requisite pam_pwquality.so

b
RHEL 8 must enforce password complexity by requiring that at least one uppercase character be used.
IA-5 - Medium - CCI-000192 - V-230357 - SV-230357r858771_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000192
Version
RHEL-08-020110
Vuln IDs
  • V-230357
Rule IDs
  • SV-230357r858771_rule
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. Password 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. RHEL 8 utilizes pwquality as a mechanism to enforce password complexity. Note that in order to require uppercase characters, without degrading the "minlen" value, the credit value must be expressed as a negative number in "/etc/security/pwquality.conf".
Checks: C-33026r833312_chk

Verify the value for "ucredit" with the following command: $ sudo grep -r ucredit /etc/security/pwquality.conf* /etc/security/pwquality.conf:ucredit = -1 If the value of "ucredit" is a positive number or is commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-33001r858770_fix

Configure the operating system to enforce password complexity by requiring that at least one uppercase character be used by setting the "ucredit" option. Add the following line to /etc/security/pwquality.conf (or modify the line to have the required value): ucredit = -1 Remove any configurations that conflict with the above value.

b
RHEL 8 must enforce password complexity by requiring that at least one lower-case character be used.
IA-5 - Medium - CCI-000193 - V-230358 - SV-230358r858773_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000193
Version
RHEL-08-020120
Vuln IDs
  • V-230358
Rule IDs
  • SV-230358r858773_rule
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. Password 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. RHEL 8 utilizes pwquality as a mechanism to enforce password complexity. Note that in order to require lower-case characters without degrading the "minlen" value, the credit value must be expressed as a negative number in "/etc/security/pwquality.conf".
Checks: C-33027r833314_chk

Verify the value for "lcredit" with the following command: $ sudo grep -r lcredit /etc/security/pwquality.conf* /etc/security/pwquality.conf:lcredit = -1 If the value of "lcredit" is a positive number or is commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-33002r858772_fix

Configure the operating system to enforce password complexity by requiring that at least one lower-case character be used by setting the "lcredit" option. Add the following line to /etc/security/pwquality.conf (or modify the line to have the required value): lcredit = -1 Remove any configurations that conflict with the above value.

b
RHEL 8 must enforce password complexity by requiring that at least one numeric character be used.
IA-5 - Medium - CCI-000194 - V-230359 - SV-230359r858775_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000194
Version
RHEL-08-020130
Vuln IDs
  • V-230359
Rule IDs
  • SV-230359r858775_rule
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. Password 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. RHEL 8 utilizes "pwquality" as a mechanism to enforce password complexity. Note that in order to require numeric characters, without degrading the minlen value, the credit value must be expressed as a negative number in "/etc/security/pwquality.conf".
Checks: C-33028r833316_chk

Verify the value for "dcredit" with the following command: $ sudo grep -r dcredit /etc/security/pwquality.conf* /etc/security/pwquality.conf:dcredit = -1 If the value of "dcredit" is a positive number or is commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-33003r858774_fix

Configure the operating system to enforce password complexity by requiring that at least one numeric character be used by setting the "dcredit" option. Add the following line to /etc/security/pwquality.conf (or modify the line to have the required value): dcredit = -1 Remove any configurations that conflict with the above value.

b
RHEL 8 must require the maximum number of repeating characters of the same character class be limited to four when passwords are changed.
IA-5 - Medium - CCI-000195 - V-230360 - SV-230360r858777_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000195
Version
RHEL-08-020140
Vuln IDs
  • V-230360
Rule IDs
  • SV-230360r858777_rule
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. Password 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. RHEL 8 utilizes "pwquality" as a mechanism to enforce password complexity. The "maxclassrepeat" option sets the maximum number of allowed same consecutive characters in the same class in the new password.
Checks: C-33029r833318_chk

Check for the value of the "maxclassrepeat" option with the following command: $ sudo grep -r maxclassrepeat /etc/security/pwquality.conf* /etc/security/pwquality.conf:maxclassrepeat = 4 If the value of "maxclassrepeat" is set to "0", more than "4" or is commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-33004r858776_fix

Configure the operating system to require the change of the number of repeating characters of the same character class when passwords are changed by setting the "maxclassrepeat" option. Add the following line to "/etc/security/pwquality.conf" conf (or modify the line to have the required value): maxclassrepeat = 4 Remove any configurations that conflict with the above value.

b
RHEL 8 must require the maximum number of repeating characters be limited to three when passwords are changed.
IA-5 - Medium - CCI-000195 - V-230361 - SV-230361r858779_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000195
Version
RHEL-08-020150
Vuln IDs
  • V-230361
Rule IDs
  • SV-230361r858779_rule
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. Password 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. RHEL 8 utilizes "pwquality" as a mechanism to enforce password complexity. The "maxrepeat" option sets the maximum number of allowed same consecutive characters in a new password.
Checks: C-33030r833320_chk

Check for the value of the "maxrepeat" option with the following command: $ sudo grep -r maxrepeat /etc/security/pwquality.conf* /etc/security/pwquality.conf:maxrepeat = 3 If the value of "maxrepeat" is set to more than "3" or is commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-33005r858778_fix

Configure the operating system to require the change of the number of repeating consecutive characters when passwords are changed by setting the "maxrepeat" option. Add the following line to "/etc/security/pwquality.conf conf" (or modify the line to have the required value): maxrepeat = 3 Remove any configurations that conflict with the above value.

b
RHEL 8 must require the change of at least four character classes when passwords are changed.
IA-5 - Medium - CCI-000195 - V-230362 - SV-230362r858781_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000195
Version
RHEL-08-020160
Vuln IDs
  • V-230362
Rule IDs
  • SV-230362r858781_rule
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. Password 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. RHEL 8 utilizes "pwquality" as a mechanism to enforce password complexity. The "minclass" option sets the minimum number of required classes of characters for the new password (digits, uppercase, lowercase, others).
Checks: C-33031r833322_chk

Verify the value of the "minclass" option with the following command: $ sudo grep -r minclass /etc/security/pwquality.conf* /etc/security/pwquality.conf:minclass = 4 If the value of "minclass" is set to less than "4" or is commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-33006r858780_fix

Configure the operating system to require the change of at least four character classes when passwords are changed by setting the "minclass" option. Add the following line to "/etc/security/pwquality.conf conf" (or modify the line to have the required value): minclass = 4 Remove any configurations that conflict with the above value.

b
RHEL 8 must require the change of at least 8 characters when passwords are changed.
IA-5 - Medium - CCI-000195 - V-230363 - SV-230363r858783_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000195
Version
RHEL-08-020170
Vuln IDs
  • V-230363
Rule IDs
  • SV-230363r858783_rule
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. Password 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. RHEL 8 utilizes "pwquality" as a mechanism to enforce password complexity. The "difok" option sets the number of characters in a password that must not be present in the old password.
Checks: C-33032r833324_chk

Verify the value of the "difok" option with the following command: $ sudo grep -r difok /etc/security/pwquality.conf* /etc/security/pwquality.conf:difok = 8 If the value of "difok" is set to less than "8" or is commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-33007r858782_fix

Configure the operating system to require the change of at least eight of the total number of characters when passwords are changed by setting the "difok" option. Add the following line to "/etc/security/pwquality.conf" (or modify the line to have the required value): difok = 8 Remove any configurations that conflict with the above value.

b
RHEL 8 passwords must have a 24 hours/1 day minimum password lifetime restriction in /etc/shadow.
IA-5 - Medium - CCI-000198 - V-230364 - SV-230364r627750_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000198
Version
RHEL-08-020180
Vuln IDs
  • V-230364
Rule IDs
  • SV-230364r627750_rule
Enforcing a minimum password lifetime helps to prevent repeated password changes to defeat the password reuse or history enforcement requirement. If users are allowed to immediately and continually change their password, the password could be repeatedly changed in a short period of time to defeat the organization's policy regarding password reuse.
Checks: C-33033r567838_chk

Check whether the minimum time period between password changes for each user account is one day or greater. $ sudo awk -F: '$4 &lt; 1 {print $1 " " $4}' /etc/shadow If any results are returned that are not associated with a system account, this is a finding.

Fix: F-33008r567839_fix

Configure non-compliant accounts to enforce a 24 hours/1 day minimum password lifetime: $ sudo chage -m 1 [user]

b
RHEL 8 passwords for new users or password changes must have a 24 hours/1 day minimum password lifetime restriction in /etc/login.defs.
IA-5 - Medium - CCI-000198 - V-230365 - SV-230365r858727_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000198
Version
RHEL-08-020190
Vuln IDs
  • V-230365
Rule IDs
  • SV-230365r858727_rule
Enforcing a minimum password lifetime helps to prevent repeated password changes to defeat the password reuse or history enforcement requirement. If users are allowed to immediately and continually change their password, the password could be repeatedly changed in a short period of time to defeat the organization's policy regarding password reuse.
Checks: C-33034r567841_chk

Verify the operating system enforces 24 hours/1 day as the minimum password lifetime for new user accounts. Check for the value of "PASS_MIN_DAYS" in "/etc/login.defs" with the following command: $ sudo grep -i pass_min_days /etc/login.defs PASS_MIN_DAYS 1 If the "PASS_MIN_DAYS" parameter value is not "1" or greater, or is commented out, this is a finding.

Fix: F-33009r567842_fix

Configure the operating system to enforce 24 hours/1 day as the minimum password lifetime. Add the following line in "/etc/login.defs" (or modify the line to have the required value): PASS_MIN_DAYS 1

b
RHEL 8 user account passwords must have a 60-day maximum password lifetime restriction.
IA-5 - Medium - CCI-000199 - V-230366 - SV-230366r646878_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000199
Version
RHEL-08-020200
Vuln IDs
  • V-230366
Rule IDs
  • SV-230366r646878_rule
Any password, no matter how complex, can eventually be cracked. Therefore, passwords need to be changed periodically. If RHEL 8 does not limit the lifetime of passwords and force users to change their passwords, there is the risk that RHEL 8 passwords could be compromised.
Checks: C-33035r646877_chk

Verify that RHEL 8 enforces a 60-day maximum password lifetime for new user accounts by running the following command: $ sudo grep -i pass_max_days /etc/login.defs PASS_MAX_DAYS 60 If the "PASS_MAX_DAYS" parameter value is greater than "60", or commented out, this is a finding.

Fix: F-33010r567845_fix

Configure RHEL 8 to enforce a 60-day maximum password lifetime. Add, or modify the following line in the "/etc/login.defs" file: PASS_MAX_DAYS 60

b
RHEL 8 user account passwords must be configured so that existing passwords are restricted to a 60-day maximum lifetime.
IA-5 - Medium - CCI-000199 - V-230367 - SV-230367r627750_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000199
Version
RHEL-08-020210
Vuln IDs
  • V-230367
Rule IDs
  • SV-230367r627750_rule
Any password, no matter how complex, can eventually be cracked. Therefore, passwords need to be changed periodically. If RHEL 8 does not limit the lifetime of passwords and force users to change their passwords, there is the risk that RHEL 8 passwords could be compromised.
Checks: C-33036r567847_chk

Check whether the maximum time period for existing passwords is restricted to 60 days with the following commands: $ sudo awk -F: '$5 &gt; 60 {print $1 " " $5}' /etc/shadow $ sudo awk -F: '$5 &lt;= 0 {print $1 " " $5}' /etc/shadow If any results are returned that are not associated with a system account, this is a finding.

Fix: F-33011r567848_fix

Configure non-compliant accounts to enforce a 60-day maximum password lifetime restriction. $ sudo chage -M 60 [user]

b
RHEL 8 must be configured in the password-auth file to prohibit password reuse for a minimum of five generations.
IA-5 - Medium - CCI-000200 - V-230368 - SV-230368r902759_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000200
Version
RHEL-08-020220
Vuln IDs
  • V-230368
Rule IDs
  • SV-230368r902759_rule
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 reuse their password consecutively when that password has exceeded its defined lifetime, the end result is a password that is not changed per policy requirements. RHEL 8 uses "pwhistory" consecutively as a mechanism to prohibit password reuse. This is set in both: /etc/pam.d/password-auth /etc/pam.d/system-auth. Note that manual changes to the listed files may be overwritten by the "authselect" program.
Checks: C-33037r902756_chk

Verify the operating system is configured in the password-auth file to prohibit password reuse for a minimum of five generations. Check for the value of the "remember" argument in "/etc/pam.d/password-auth" with the following command: $ sudo grep -i remember /etc/pam.d/password-auth password requisite pam_pwhistory.so use_authtok remember=5 retry=3 If the line containing "pam_pwhistory.so" does not have the "remember" module argument set, is commented out, or the value of the "remember" module argument is set to less than "5", this is a finding.

Fix: F-33012r902757_fix

Configure the operating system in the password-auth file to prohibit password reuse for a minimum of five generations. Add the following line in "/etc/pam.d/password-auth" (or modify the line to have the required value): password requisite pam_pwhistory.so use_authtok remember=5 retry=3

b
RHEL 8 passwords must have a minimum of 15 characters.
IA-5 - Medium - CCI-000205 - V-230369 - SV-230369r858785_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000205
Version
RHEL-08-020230
Vuln IDs
  • V-230369
Rule IDs
  • SV-230369r858785_rule
The shorter the password, the lower the number of possible combinations that need to be tested before the password is compromised. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password length is one factor of several that helps to determine strength and how long it takes to crack a password. Use of more characters in a password helps to increase exponentially the time and/or resources required to compromise the password. RHEL 8 utilizes "pwquality" as a mechanism to enforce password complexity. Configurations are set in the "etc/security/pwquality.conf" file. The "minlen", sometimes noted as minimum length, acts as a "score" of complexity based on the credit components of the "pwquality" module. By setting the credit components to a negative value, not only will those components be required, they will not count towards the total "score" of "minlen". This will enable "minlen" to require a 15-character minimum. The DoD minimum password requirement is 15 characters.
Checks: C-33038r833326_chk

Verify the operating system enforces a minimum 15-character password length. The "minlen" option sets the minimum number of characters in a new password. Check for the value of the "minlen" option with the following command: $ sudo grep -r minlen /etc/security/pwquality.conf* /etc/security/pwquality.conf:minlen = 15 If the command does not return a "minlen" value of 15 or greater, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-33013r858784_fix

Configure operating system to enforce a minimum 15-character password length. Add the following line to "/etc/security/pwquality.conf" (or modify the line to have the required value): minlen = 15 Remove any configurations that conflict with the above value.

b
RHEL 8 passwords for new users must have a minimum of 15 characters.
IA-5 - Medium - CCI-000205 - V-230370 - SV-230370r627750_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-000205
Version
RHEL-08-020231
Vuln IDs
  • V-230370
Rule IDs
  • SV-230370r627750_rule
The shorter the password, the lower the number of possible combinations that need to be tested before the password is compromised. Password complexity, or strength, is a measure of the effectiveness of a password in resisting attempts at guessing and brute-force attacks. Password length is one factor of several that helps to determine strength and how long it takes to crack a password. Use of more characters in a password helps to increase exponentially the time and/or resources required to compromise the password. The DoD minimum password requirement is 15 characters.
Checks: C-33039r567856_chk

Verify that RHEL 8 enforces a minimum 15-character password length for new user accounts by running the following command: $ sudo grep -i pass_min_len /etc/login.defs PASS_MIN_LEN 15 If the "PASS_MIN_LEN" parameter value is less than "15", or commented out, this is a finding.

Fix: F-33014r567857_fix

Configure operating system to enforce a minimum 15-character password length for new user accounts. Add, or modify the following line in the "/etc/login.defs" file: PASS_MIN_LEN 15

b
RHEL 8 duplicate User IDs (UIDs) must not exist for interactive users.
IA-2 - Medium - CCI-000764 - V-230371 - SV-230371r627750_rule
RMF Control
IA-2
Severity
Medium
CCI
CCI-000764
Version
RHEL-08-020240
Vuln IDs
  • V-230371
Rule IDs
  • SV-230371r627750_rule
To ensure accountability and prevent unauthenticated access, interactive users must be identified and authenticated to prevent potential misuse and compromise of the system. Interactive users include organizational employees or individuals the organization deems to have equivalent status of employees (e.g., contractors). Interactive users (and processes acting on behalf of users) must be uniquely identified and authenticated to all accesses, except for the following: 1) 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 2) 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. Satisfies: SRG-OS-000104-GPOS-00051, SRG-OS-000121-GPOS-00062, SRG-OS-000042-GPOS-00020
Checks: C-33040r567859_chk

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

Fix: F-33015r567860_fix

Edit the file "/etc/passwd" and provide each interactive user account that has a duplicate User ID (UID) with a unique UID.

b
RHEL 8 must implement smart card logon for multifactor authentication for access to interactive accounts.
IA-2 - Medium - CCI-000765 - V-230372 - SV-230372r627750_rule
RMF Control
IA-2
Severity
Medium
CCI
CCI-000765
Version
RHEL-08-020250
Vuln IDs
  • V-230372
Rule IDs
  • SV-230372r627750_rule
Using an authentication device, such as a Common Access Card (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. Multifactor 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 CAC. There are various methods of implementing multifactor authentication for RHEL 8. Some methods include a local system multifactor account mapping or joining the system to a domain and utilizing a Red Hat idM server or Microsoft Windows Active Directory server. Any of these methods will require that the client operating system handle the multifactor authentication correctly. Satisfies: SRG-OS-000105-GPOS-00052, SRG-OS-000106-GPOS-00053, SRG-OS-000107-GPOS-00054, SRG-OS-000108-GPOS-00055
Checks: C-33041r567862_chk

Verify RHEL 8 uses multifactor authentication for local access to accounts. Note: If the System Administrator demonstrates the use of an approved alternate multifactor authentication method, this requirement is not applicable. Check that the "pam_cert_auth" setting is set to "true" in the "/etc/sssd/sssd.conf" file. Check that the "try_cert_auth" or "require_cert_auth" options are configured in both "/etc/pam.d/system-auth" and "/etc/pam.d/smartcard-auth" files with the following command: $ sudo grep cert_auth /etc/sssd/sssd.conf /etc/pam.d/* /etc/sssd/sssd.conf:pam_cert_auth = True /etc/pam.d/smartcard-auth:auth sufficient pam_sss.so try_cert_auth /etc/pam.d/system-auth:auth [success=done authinfo_unavail=ignore ignore=ignore default=die] pam_sss.so try_cert_auth If "pam_cert_auth" is not set to "true" in "/etc/sssd/sssd.conf", this is a finding. If "pam_sss.so" is not set to "try_cert_auth" or "require_cert_auth" in both the "/etc/pam.d/smartcard-auth" and "/etc/pam.d/system-auth" files, this is a finding.

Fix: F-33016r567863_fix

Configure RHEL 8 to use multifactor authentication for local access to accounts. Add or update the "pam_cert_auth" setting in the "/etc/sssd/sssd.conf" file to match the following line: [pam] pam_cert_auth = True Add or update "pam_sss.so" with "try_cert_auth" or "require_cert_auth" in the "/etc/pam.d/system-auth" and "/etc/pam.d/smartcard-auth" files based on the following examples: /etc/pam.d/smartcard-auth:auth sufficient pam_sss.so try_cert_auth /etc/pam.d/system-auth:auth [success=done authinfo_unavail=ignore ignore=ignore default=die] pam_sss.so try_cert_auth The "sssd" service must be restarted for the changes to take effect. To restart the "sssd" service, run the following command: $ sudo systemctl restart sssd.service

b
RHEL 8 account identifiers (individuals, groups, roles, and devices) must be disabled after 35 days of inactivity.
IA-4 - Medium - CCI-000795 - V-230373 - SV-230373r627750_rule
RMF Control
IA-4
Severity
Medium
CCI
CCI-000795
Version
RHEL-08-020260
Vuln IDs
  • V-230373
Rule IDs
  • SV-230373r627750_rule
Inactive identifiers pose a risk to systems and applications because attackers may exploit an inactive identifier and potentially obtain undetected access to the system. Owners of inactive accounts will not notice if unauthorized access to their user account has been obtained. RHEL 8 needs to track periods of inactivity and disable application identifiers after 35 days of inactivity.
Checks: C-33042r567865_chk

Verify the account identifiers (individuals, groups, roles, and devices) are disabled after 35 days of inactivity with the following command: Check the account inactivity value by performing the following command: $ sudo grep -i inactive /etc/default/useradd INACTIVE=35 If "INACTIVE" is set to "-1", a value greater than "35", or is commented out, this is a finding.

Fix: F-33017r567866_fix

Configure RHEL 8 to disable account identifiers after 35 days of inactivity after the password expiration. Run the following command to change the configuration for useradd: $ sudo useradd -D -f 35 DoD recommendation is 35 days, but a lower value is acceptable. The value "-1" will disable this feature, and "0" will disable the account immediately after the password expires.

b
RHEL 8 must automatically expire temporary accounts within 72 hours.
AC-2 - Medium - CCI-001682 - V-230374 - SV-230374r903129_rule
RMF Control
AC-2
Severity
Medium
CCI
CCI-001682
Version
RHEL-08-020270
Vuln IDs
  • V-230374
Rule IDs
  • SV-230374r903129_rule
Temporary accounts are privileged or nonprivileged accounts that are established during pressing circumstances, such as new software or hardware configuration or an incident response, where the need for prompt account activation requires bypassing normal account authorization procedures. If any inactive temporary accounts are left enabled on the system and are not either manually removed or automatically expired within 72 hours, the security posture of the system will be degraded and exposed to exploitation by unauthorized users or insider threat actors. Temporary accounts are different from emergency accounts. Emergency accounts, also known as "last resort" or "break glass" accounts, are local logon accounts enabled on the system for emergency use by authorized system administrators to manage a system when standard logon methods are failing or not available. Emergency accounts are not subject to manual removal or scheduled expiration requirements. The automatic expiration of temporary accounts may be extended as needed by the circumstances but it must not be extended indefinitely. A documented permanent account should be established for privileged users who need long-term maintenance accounts.
Checks: C-33043r902729_chk

Verify temporary accounts have been provisioned with an expiration date of 72 hours. For every existing temporary account, run the following command to obtain its account expiration information: $ sudo chage -l &lt;temporary_account_name&gt; | grep -i "account expires" Verify each of these accounts has an expiration date set within 72 hours. If any temporary accounts have no expiration date set or do not expire within 72 hours, this is a finding.

Fix: F-33018r902730_fix

Configure the operating system to expire temporary accounts after 72 hours with the following command: $ sudo chage -E $(date -d +3days +%Y-%m-%d) <temporary_account_name>

b
All RHEL 8 passwords must contain at least one special character.
IA-5 - Medium - CCI-001619 - V-230375 - SV-230375r858787_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-001619
Version
RHEL-08-020280
Vuln IDs
  • V-230375
Rule IDs
  • SV-230375r858787_rule
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. Password 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. RHEL 8 utilizes "pwquality" as a mechanism to enforce password complexity. Note that to require special characters without degrading the "minlen" value, the credit value must be expressed as a negative number in "/etc/security/pwquality.conf".
Checks: C-33044r833328_chk

Verify the value for "ocredit" with the following command: $ sudo grep -r ocredit /etc/security/pwquality.conf* /etc/security/pwquality.conf:ocredit = -1 If the value of "ocredit" is a positive number or is commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-33019r858786_fix

Configure the operating system to enforce password complexity by requiring that at least one special character be used by setting the "ocredit" option. Add the following line to /etc/security/pwquality.conf (or modify the line to have the required value): ocredit = -1 Remove any configurations that conflict with the above value.

b
RHEL 8 must prohibit the use of cached authentications after one day.
IA-5 - Medium - CCI-002007 - V-230376 - SV-230376r854036_rule
RMF Control
IA-5
Severity
Medium
CCI
CCI-002007
Version
RHEL-08-020290
Vuln IDs
  • V-230376
Rule IDs
  • SV-230376r854036_rule
If cached authentication information is out-of-date, the validity of the authentication information may be questionable. RHEL 8 includes multiple options for configuring authentication, but this requirement will be focus on the System Security Services Daemon (SSSD). By default sssd does not cache credentials.
Checks: C-33045r567874_chk

Verify that the SSSD prohibits the use of cached authentications after one day. Note: If smart card authentication is not being used on the system this item is Not Applicable. Check that SSSD allows cached authentications with the following command: $ sudo grep cache_credentials /etc/sssd/sssd.conf cache_credentials = true If "cache_credentials" is set to "false" or missing from the configuration file, this is not a finding and no further checks are required. If "cache_credentials" is set to "true", check that SSSD prohibits the use of cached authentications after one day with the following command: $ sudo grep offline_credentials_expiration /etc/sssd/sssd.conf offline_credentials_expiration = 1 If "offline_credentials_expiration" is not set to a value of "1", this is a finding.

Fix: F-33020r567875_fix

Configure the SSSD to prohibit the use of cached authentications after one day. Add or change the following line in "/etc/sssd/sssd.conf" just below the line "[pam]". offline_credentials_expiration = 1

b
RHEL 8 must prevent the use of dictionary words for passwords.
CM-6 - Medium - CCI-000366 - V-230377 - SV-230377r858789_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-020300
Vuln IDs
  • V-230377
Rule IDs
  • SV-230377r858789_rule
If RHEL 8 allows the user to select passwords based on dictionary words, this increases the chances of password compromise by increasing the opportunity for successful guesses, and brute-force attacks.
Checks: C-33046r833330_chk

Verify RHEL 8 prevents the use of dictionary words for passwords. Determine if the field "dictcheck" is set with the following command: $ sudo grep -r dictcheck /etc/security/pwquality.conf* /etc/security/pwquality.conf:dictcheck=1 If the "dictcheck" parameter is not set to "1", or is commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-33021r858788_fix

Configure RHEL 8 to prevent the use of dictionary words for passwords. Add or update the following line in the "/etc/security/pwquality.conf" file or a configuration file in the /etc/pwquality.conf.d/ directory to contain the "dictcheck" parameter: dictcheck=1 Remove any configurations that conflict with the above value.

b
RHEL 8 must enforce a delay of at least four seconds between logon prompts following a failed logon attempt.
CM-6 - Medium - CCI-000366 - V-230378 - SV-230378r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-020310
Vuln IDs
  • V-230378
Rule IDs
  • SV-230378r627750_rule
Configuring the operating system to implement organization-wide security implementation guides and security checklists verifies compliance with federal standards and establishes a common security baseline across the DoD that reflects the most restrictive security posture consistent with operational requirements. Configuration settings are the set of parameters that can be changed in hardware, software, or firmware components of the system that affect the security posture and/or functionality of the system. Security-related parameters are those parameters impacting the security state of the system, including the parameters required to satisfy other security control requirements. Security-related parameters include, for example, registry settings; account, file, and directory permission settings; and settings for functions, ports, protocols, services, and remote connections.
Checks: C-33047r567880_chk

Verify the operating system enforces a delay of at least four seconds between console logon prompts following a failed logon attempt with the following command: $ sudo grep -i fail_delay /etc/login.defs FAIL_DELAY 4 If the value of "FAIL_DELAY" is not set to "4" or greater, or the line is commented out, this is a finding.

Fix: F-33022r567881_fix

Configure the operating system to enforce a delay of at least four seconds between logon prompts following a failed console logon attempt. Modify the "/etc/login.defs" file to set the "FAIL_DELAY" parameter to "4" or greater: FAIL_DELAY 4

b
RHEL 8 must not have unnecessary accounts.
CM-6 - Medium - CCI-000366 - V-230379 - SV-230379r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-020320
Vuln IDs
  • V-230379
Rule IDs
  • SV-230379r627750_rule
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.
Checks: C-33048r567883_chk

Verify all accounts on the system are assigned to an active system, application, or user account. Obtain the list of authorized system accounts from the Information System Security Officer (ISSO). Check the system accounts on the system with the following command: $ sudo more /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin Accounts such as "games" and "gopher" are not authorized accounts as they do not support authorized system functions. If the accounts on the system do not match the provided documentation, or accounts that do not support an authorized system function are present, this is a finding.

Fix: F-33023r567884_fix

Configure the system so all accounts on the system are assigned to an active system, application, or user account. Remove accounts that do not support approved system activities or that allow for a normal user to perform administrative-level actions. Document all authorized accounts on the system.

c
RHEL 8 must not allow accounts configured with blank or null passwords.
CM-6 - High - CCI-000366 - V-230380 - SV-230380r858715_rule
RMF Control
CM-6
Severity
High
CCI
CCI-000366
Version
RHEL-08-020330
Vuln IDs
  • V-230380
Rule IDs
  • SV-230380r858715_rule
If an account has an empty password, anyone could log on and run commands with the privileges of that account. Accounts with empty passwords should never be used in operational environments.
Checks: C-33049r858714_chk

To verify that null passwords cannot be used, run the following command: $ sudo grep -ir permitemptypasswords /etc/ssh/sshd_config* PermitEmptyPasswords no If "PermitEmptyPasswords" is set to "yes", this is a finding. If conflicting results are returned, this is a finding.

Fix: F-33024r743992_fix

Edit the following line in "etc/ssh/sshd_config" to prevent logons with empty passwords. PermitEmptyPasswords no The SSH daemon must be restarted for the changes to take effect. To restart the SSH daemon, run the following command: $ sudo systemctl restart sshd.service

a
RHEL 8 must display the date and time of the last successful account logon upon logon.
AC-9 - Low - CCI-000052 - V-230381 - SV-230381r858726_rule
RMF Control
AC-9
Severity
Low
CCI
CCI-000052
Version
RHEL-08-020340
Vuln IDs
  • V-230381
Rule IDs
  • SV-230381r858726_rule
Providing users with feedback on when account accesses last occurred facilitates user recognition and reporting of unauthorized account use.
Checks: C-33050r567889_chk

Verify users are provided with feedback on when account accesses last occurred with the following command: $ sudo grep pam_lastlog /etc/pam.d/postlogin session required pam_lastlog.so showfailed If "pam_lastlog" is missing from "/etc/pam.d/postlogin" file, or the silent option is present, this is a finding.

Fix: F-33025r567890_fix

Configure the operating system to provide users with feedback on when account accesses last occurred by setting the required configuration options in "/etc/pam.d/postlogin". Add the following line to the top of "/etc/pam.d/postlogin": session required pam_lastlog.so showfailed

b
RHEL 8 must display the date and time of the last successful account logon upon an SSH logon.
AC-9 - Medium - CCI-000052 - V-230382 - SV-230382r858717_rule
RMF Control
AC-9
Severity
Medium
CCI
CCI-000052
Version
RHEL-08-020350
Vuln IDs
  • V-230382
Rule IDs
  • SV-230382r858717_rule
Providing users with feedback on when account accesses via SSH last occurred facilitates user recognition and reporting of unauthorized account use.
Checks: C-33051r858716_chk

Verify SSH provides users with feedback on when account accesses last occurred with the following command: $ sudo grep -ir printlastlog /etc/ssh/sshd_config* PrintLastLog yes If the "PrintLastLog" keyword is set to "no", is missing, or is commented out, this is a finding. If conflicting results are returned, this is a finding.

Fix: F-33026r567893_fix

Configure SSH to provide users with feedback on when account accesses last occurred by setting the required configuration options in "/etc/pam.d/sshd" or in the "sshd_config" file used by the system ("/etc/ssh/sshd_config" will be used in the example) (this file may be named differently or be in a different location if using a version of SSH that is provided by a third-party vendor). Modify the "PrintLastLog" line in "/etc/ssh/sshd_config" to match the following: PrintLastLog yes The SSH service must be restarted for changes to "sshd_config" to take effect.

b
RHEL 8 must define default permissions for all authenticated users in such a way that the user can only read and modify their own files.
CM-6 - Medium - CCI-000366 - V-230383 - SV-230383r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-020351
Vuln IDs
  • V-230383
Rule IDs
  • SV-230383r627750_rule
Setting the most restrictive default permissions ensures that when new accounts are created, they do not have unnecessary access.
Checks: C-33052r567895_chk

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

Fix: F-33027r567896_fix

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

b
RHEL 8 must set the umask value to 077 for all local interactive user accounts.
CM-6 - Medium - CCI-000366 - V-230384 - SV-230384r858732_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-020352
Vuln IDs
  • V-230384
Rule IDs
  • SV-230384r858732_rule
The umask controls the default access mode assigned to newly created files. A umask of 077 limits new files to mode 600 or less permissive. Although umask can be represented as a four-digit number, the first digit representing special access modes is typically ignored or required to be "0". This requirement applies to the globally configured system defaults and the local interactive user defaults for each account on the system.
Checks: C-33053r858731_chk

Verify that the default umask for all local interactive users is "077". Identify the locations of all local interactive user home directories by looking at the "/etc/passwd" file. Check all local interactive user initialization files for interactive users with the following command: Note: The example is for a system that is configured to create users home directories in the "/home" directory. $ sudo grep -ir ^umask /home | grep -v '.bash_history' If any local interactive user initialization files are found to have a umask statement that has a value less restrictive than "077", this is a finding.

Fix: F-33028r567899_fix

Remove the umask statement from all local interactive user's initialization files. If the account is for an application, the requirement for a umask less restrictive than "077" can be documented with the Information System Security Officer, but the user agreement for access to the account must specify that the local interactive user must log on to their account first and then switch the user to the application account with the correct option to gain the account's environment variables.

b
RHEL 8 must define default permissions for logon and non-logon shells.
CM-6 - Medium - CCI-000366 - V-230385 - SV-230385r792902_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-020353
Vuln IDs
  • V-230385
Rule IDs
  • SV-230385r792902_rule
The umask controls the default access mode assigned to newly created files. A umask of 077 limits new files to mode 600 or less permissive. Although umask can be represented as a four-digit number, the first digit representing special access modes is typically ignored or required to be "0". This requirement applies to the globally configured system defaults and the local interactive user defaults for each account on the system.
Checks: C-33054r792900_chk

Verify that the umask default for installed shells is "077". Check for the value of the "UMASK" parameter in the "/etc/bashrc", "/etc/csh.cshrc" and "/etc/profile" files with the following command: Note: If the value of the "UMASK" parameter is set to "000" in the "/etc/bashrc" the "/etc/csh.cshrc" or the "/etc/profile" files, the Severity is raised to a CAT I. # grep -i umask /etc/bashrc /etc/csh.cshrc /etc/profile /etc/bashrc: umask 077 /etc/bashrc: umask 077 /etc/csh.cshrc: umask 077 /etc/csh.cshrc: umask 077 /etc/profile: umask 077 /etc/profile: umask 077 If the value for the "UMASK" parameter is not "077", or the "UMASK" parameter is missing or is commented out, this is a finding.

Fix: F-33029r792901_fix

Configure the operating system to define default permissions for all authenticated users in such a way that the user can only read and modify their own files. Add or edit the lines for the "UMASK" parameter in the "/etc/bashrc", "/etc/csh.cshrc" and "/etc/profile"files to "077": UMASK 077

b
The RHEL 8 audit system must be configured to audit the execution of privileged functions and prevent all software from executing at higher privilege levels than users executing the software.
AC-6 - Medium - CCI-002233 - V-230386 - SV-230386r854037_rule
RMF Control
AC-6
Severity
Medium
CCI
CCI-002233
Version
RHEL-08-030000
Vuln IDs
  • V-230386
Rule IDs
  • SV-230386r854037_rule
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. Satisfies: SRG-OS-000326-GPOS-00126, SRG-OS-000327-GPOS-00127
Checks: C-33055r567904_chk

Verify RHEL 8 audits the execution of privileged functions. Check if RHEL 8 is configured to audit the execution of the "execve" system call, by running the following command: $ sudo grep execve /etc/audit/audit.rules -a always,exit -F arch=b32 -S execve -C uid!=euid -F euid=0 -k execpriv -a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -k execpriv -a always,exit -F arch=b32 -S execve -C gid!=egid -F egid=0 -k execpriv -a always,exit -F arch=b64 -S execve -C gid!=egid -F egid=0 -k execpriv If the command does not return all lines, or the lines are commented out, this is a finding.

Fix: F-33030r567905_fix

Configure RHEL 8 to audit the execution of the "execve" system call. Add or update the following file system rules to "/etc/audit/rules.d/audit.rules": -a always,exit -F arch=b32 -S execve -C uid!=euid -F euid=0 -k execpriv -a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -k execpriv -a always,exit -F arch=b32 -S execve -C gid!=egid -F egid=0 -k execpriv -a always,exit -F arch=b64 -S execve -C gid!=egid -F egid=0 -k execpriv The audit daemon must be restarted for the changes to take effect.

b
Cron logging must be implemented in RHEL 8.
CM-6 - Medium - CCI-000366 - V-230387 - SV-230387r743996_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-030010
Vuln IDs
  • V-230387
Rule IDs
  • SV-230387r743996_rule
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.
Checks: C-33056r743994_chk

Verify that "rsyslog" is configured to log cron events with the following command: Note: If another logging package is used, substitute the utility configuration file for "/etc/rsyslog.conf" or "/etc/rsyslog.d/*.conf" files. $ sudo grep -s cron /etc/rsyslog.conf /etc/rsyslog.d/*.conf /etc/rsyslog.conf:*.info;mail.none;authpriv.none;cron.none /var/log/messages /etc/rsyslog.conf:# Log cron stuff /etc/rsyslog.conf:cron.* /var/log/cron If the command does not return a response, check for cron logging all facilities with the following command. $ sudo grep -s /var/log/messages /etc/rsyslog.conf /etc/rsyslog.d/*.conf /etc/rsyslog.conf:*.info;mail.none;authpriv.none;cron.none /var/log/messages If "rsyslog" is not logging messages for the cron facility or all facilities, this is a finding.

Fix: F-33031r743995_fix

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: cron.* /var/log/cron The rsyslog daemon must be restarted for the changes to take effect: $ sudo systemctl restart rsyslog.service

b
The RHEL 8 System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) must be alerted of an audit processing failure event.
AU-5 - Medium - CCI-000139 - V-230388 - SV-230388r627750_rule
RMF Control
AU-5
Severity
Medium
CCI
CCI-000139
Version
RHEL-08-030020
Vuln IDs
  • V-230388
Rule IDs
  • SV-230388r627750_rule
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. Audit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded. This 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.
Checks: C-33057r567910_chk

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

Fix: F-33032r567911_fix

Configure "auditd" service to notify the SA and ISSO in the event of an audit processing failure. Edit the following line in "/etc/audit/auditd.conf" to ensure that administrators are notified via email for those situations: action_mail_acct = root

b
The RHEL 8 Information System Security Officer (ISSO) and System Administrator (SA) (at a minimum) must have mail aliases to be notified of an audit processing failure.
AU-5 - Medium - CCI-000139 - V-230389 - SV-230389r627750_rule
RMF Control
AU-5
Severity
Medium
CCI
CCI-000139
Version
RHEL-08-030030
Vuln IDs
  • V-230389
Rule IDs
  • SV-230389r627750_rule
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. Audit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded. This 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.
Checks: C-33058r567913_chk

Verify that the administrators are notified in the event of an audit processing failure. Check that the "/etc/aliases" file has a defined value for "root". $ sudo grep "postmaster:\s*root$" /etc/aliases If the command does not return a line, or the line is commented out, ask the system administrator to indicate how they and the ISSO are notified of an audit process failure. If there is no evidence of the proper personnel being notified of an audit processing failure, this is a finding.

Fix: F-33033r567914_fix

Configure RHEL 8 to notify administrators in the event of an audit processing failure. Add/update the following line in "/etc/aliases": postmaster: root

b
The RHEL 8 System must take appropriate action when an audit processing failure occurs.
AU-5 - Medium - CCI-000140 - V-230390 - SV-230390r627750_rule
RMF Control
AU-5
Severity
Medium
CCI
CCI-000140
Version
RHEL-08-030040
Vuln IDs
  • V-230390
Rule IDs
  • SV-230390r627750_rule
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. Audit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded. This 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.
Checks: C-33059r567916_chk

Verify RHEL 8 takes the appropriate action when an audit processing failure occurs. Check that RHEL 8 takes the appropriate action when an audit processing failure occurs with the following command: $ sudo grep disk_error_action /etc/audit/auditd.conf disk_error_action = HALT If the value of the "disk_error_action" option is not "SYSLOG", "SINGLE", or "HALT", or the line is commented out, ask the system administrator to indicate how the system takes appropriate action when an audit process failure occurs. If there is no evidence of appropriate action, this is a finding.

Fix: F-33034r567917_fix

Configure RHEL 8 to shut down by default upon audit failure (unless availability is an overriding concern). Add or update the following line (depending on configuration "disk_error_action" can be set to "SYSLOG" or "SINGLE" depending on configuration) in "/etc/audit/auditd.conf" file: disk_error_action = HALT If availability has been determined to be more important, and this decision is documented with the ISSO, configure the operating system to notify system administration staff and ISSO staff in the event of an audit processing failure by setting the "disk_error_action" to "SYSLOG".

b
The RHEL 8 audit system must take appropriate action when the audit storage volume is full.
AU-5 - Medium - CCI-000140 - V-230392 - SV-230392r627750_rule
RMF Control
AU-5
Severity
Medium
CCI
CCI-000140
Version
RHEL-08-030060
Vuln IDs
  • V-230392
Rule IDs
  • SV-230392r627750_rule
It is critical that when RHEL 8 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. When availability is an overriding concern, other approved actions in response to an audit failure are as follows: 1) If the failure was caused by the lack of audit record storage capacity, RHEL 8 must continue generating audit records if possible (automatically restarting the audit service if necessary) and overwriting the oldest audit records in a first-in-first-out manner. 2) If audit records are sent to a centralized collection server and communication with this server is lost or the server fails, RHEL 8 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.
Checks: C-33061r567922_chk

Verify RHEL 8 takes the appropriate action when the audit storage volume is full. Check that RHEL 8 takes the appropriate action when the audit storage volume is full with the following command: $ sudo grep disk_full_action /etc/audit/auditd.conf disk_full_action = HALT If the value of the "disk_full_action" option is not "SYSLOG", "SINGLE", or "HALT", or the line is commented out, ask the system administrator to indicate how the system takes appropriate action when an audit storage volume is full. If there is no evidence of appropriate action, this is a finding.

Fix: F-33036r567923_fix

Configure RHEL 8 to shut down by default upon audit failure (unless availability is an overriding concern). Add or update the following line (depending on configuration "disk_full_action" can be set to "SYSLOG" or "SINGLE" depending on configuration) in "/etc/audit/auditd.conf" file: disk_full_action = HALT If availability has been determined to be more important, and this decision is documented with the ISSO, configure the operating system to notify system administration staff and ISSO staff in the event of an audit processing failure by setting the "disk_full_action" to "SYSLOG".

b
The RHEL 8 audit system must audit local events.
CM-6 - Medium - CCI-000366 - V-230393 - SV-230393r627750_rule
RMF Control
CM-6
Severity
Medium
CCI
CCI-000366
Version
RHEL-08-030061
Vuln IDs
  • V-230393
Rule IDs
  • SV-230393r627750_rule
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. Audit 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.
Checks: C-33062r567925_chk

Verify the RHEL 8 Audit Daemon is configured to include local events, with the following command: $ sudo grep local_events /etc/audit/auditd.conf local_events = yes If the value of the "local_events" option is not set to "yes", or the line is commented out, this is a finding.

Fix: F-33037r567926_fix

Configure RHEL 8 to audit local events on the system. Add or update the following line in "/etc/audit/auditd.conf" file: local_events = yes

b
RHEL 8 must label all off-loaded audit logs before sending them to the central log server.
AU-4 - Medium - CCI-001851 - V-230394 - SV-230394r877390_rule
RMF Control
AU-4
Severity
Medium
CCI
CCI-001851
Version
RHEL-08-030062
Vuln IDs
  • V-230394
Rule IDs
  • SV-230394r877390_rule
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. Audit 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. Enriched logging is needed to determine who, what, and when events occur on a system. Without this, determining root cause of an event will be much more difficult. When audit logs are not labeled before they are sent to a central log server, the audit data will not be able to be analyzed and tied back to the correct system.
Checks: C-33063r567928_chk

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

Fix: F-33038r567929_fix

Edit the /etc/audit/auditd.conf file and add or update the "name_format" option: name_format = hostname The audit daemon must be restarted for changes to take effect.

a
RHEL 8 must resolve audit information before writing to disk.
CM-6 - Low - CCI-000366 - V-230395 - SV-230395r627750_rule
RMF Control
CM-6
Severity
Low
CCI
CCI-000366
Version
RHEL-08-030063
Vuln IDs
  • V-230395
Rule IDs
  • SV-230395r627750_rule
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. Audit 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. Enriched logging aids in making sense of who, what, and when events occur on a system. Without this, determining root cause of an event will be much more difficult.
Checks: C-33064r567931_chk

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

Fix: F-33039r567932_fix

Edit the /etc/audit/auditd.conf file and add or update the "log_format" option: log_format = ENRICHED The audit daemon must be restarted for changes to take effect.

b
RHEL 8 audit logs must have a mode of 0600 or less permissive to prevent unauthorized read access.
AU-9 - Medium - CCI-000162 - V-230396 - SV-230396r902733_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
RHEL-08-030070
Vuln IDs
  • V-230396
Rule IDs
  • SV-230396r902733_rule
Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 8 system or platform. Additionally, Personally Identifiable Information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives. The 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. Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029, SRG-OS-000206-GPOS-00084
Checks: C-33065r567934_chk

Verify the audit logs have a mode of "0600" or less permissive. First, determine where the audit logs are stored with the following command: $ sudo grep -iw log_file /etc/audit/auditd.conf log_file = /var/log/audit/audit.log Using the location of the audit log file, check if the audit log has a mode of "0600" or less permissive with the following command: $ sudo stat -c "%a %n" /var/log/audit/audit.log 600 /var/log/audit/audit.log If the audit log has a mode more permissive than "0600", this is a finding.

Fix: F-33040r902732_fix

Configure the audit log to be protected from unauthorized read access by setting the correct permissive mode with the following command: $ sudo chmod 0600 /var/log/audit/audit.log

b
RHEL 8 audit logs must be owned by root to prevent unauthorized read access.
AU-9 - Medium - CCI-000162 - V-230397 - SV-230397r627750_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
RHEL-08-030080
Vuln IDs
  • V-230397
Rule IDs
  • SV-230397r627750_rule
Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can identify the RHEL 8 system or platform. Additionally, Personally Identifiable Information (PII) and operational information must not be revealed through error messages to unauthorized personnel or their designated representatives. The 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. Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029, SRG-OS-000206-GPOS-00084
Checks: C-33066r567937_chk

Verify the audit logs are owned by "root". First, determine where the audit logs are stored with the following command: $ sudo grep -iw log_file /etc/audit/auditd.conf log_file = /var/log/audit/audit.log Using the location of the audit log file, determine if the audit log is owned by "root" using the following command: $ sudo ls -al /var/log/audit/audit.log rw------- 2 root root 23 Jun 11 11:56 /var/log/audit/audit.log If the audit log is not owned by "root", this is a finding.

Fix: F-33041r567938_fix

Configure the audit log to be protected from unauthorized read access, by setting the correct owner as "root" with the following command: $ sudo chown root [audit_log_file] Replace "[audit_log_file]" to the correct audit log path, by default this location is "/var/log/audit/audit.log".

b
RHEL 8 audit logs must be group-owned by root to prevent unauthorized read access.
AU-9 - Medium - CCI-000162 - V-230398 - SV-230398r627750_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
RHEL-08-030090
Vuln IDs
  • V-230398
Rule IDs
  • SV-230398r627750_rule
Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 activity. Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029
Checks: C-33067r567940_chk

Verify the audit logs are group-owned by "root". First determine where the audit logs are stored with the following command: $ sudo grep -iw log_file /etc/audit/auditd.conf log_file = /var/log/audit/audit.log Using the location of the audit log file, determine if the audit log is group-owned by "root" using the following command: $ sudo ls -al /var/log/audit/audit.log rw------- 2 root root 23 Jun 11 11:56 /var/log/audit/audit.log If the audit log is not group-owned by "root", this is a finding.

Fix: F-33042r567941_fix

Configure the audit log to be owned by root by configuring the log group in the /etc/audit/auditd.conf file: log_group = root

b
RHEL 8 audit log directory must be owned by root to prevent unauthorized read access.
AU-9 - Medium - CCI-000162 - V-230399 - SV-230399r627750_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
RHEL-08-030100
Vuln IDs
  • V-230399
Rule IDs
  • SV-230399r627750_rule
Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 activity. Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029
Checks: C-33068r567943_chk

Verify the audit log directory is owned by "root" to prevent unauthorized read access. Determine where the audit logs are stored with the following command: $ sudo grep -iw log_file /etc/audit/auditd.conf log_file = /var/log/audit/audit.log Determine the owner of the audit log directory by using the output of the above command (ex: "/var/log/audit/"). Run the following command with the correct audit log directory path: $ sudo ls -ld /var/log/audit drw------- 2 root root 23 Jun 11 11:56 /var/log/audit If the audit log directory is not owned by "root", this is a finding.

Fix: F-33043r567944_fix

Configure the audit log to be protected from unauthorized read access, by setting the correct owner as "root" with the following command: $ sudo chown root [audit_log_directory] Replace "[audit_log_directory]" with the correct audit log directory path, by default this location is usually "/var/log/audit".

b
RHEL 8 audit log directory must be group-owned by root to prevent unauthorized read access.
AU-9 - Medium - CCI-000162 - V-230400 - SV-230400r627750_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
RHEL-08-030110
Vuln IDs
  • V-230400
Rule IDs
  • SV-230400r627750_rule
Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 activity. Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029
Checks: C-33069r567946_chk

Verify the audit log directory is group-owned by "root" to prevent unauthorized read access. Determine where the audit logs are stored with the following command: $ sudo grep -iw log_file /etc/audit/auditd.conf log_file = /var/log/audit/audit.log Determine the group owner of the audit log directory by using the output of the above command (ex: "/var/log/audit/"). Run the following command with the correct audit log directory path: $ sudo ls -ld /var/log/audit drw------- 2 root root 23 Jun 11 11:56 /var/log/audit If the audit log directory is not group-owned by "root", this is a finding.

Fix: F-33044r567947_fix

Configure the audit log to be protected from unauthorized read access by setting the correct group-owner as "root" with the following command: $ sudo chgrp root [audit_log_directory] Replace "[audit_log_directory]" with the correct audit log directory path, by default this location is usually "/var/log/audit".

b
RHEL 8 audit log directory must have a mode of 0700 or less permissive to prevent unauthorized read access.
AU-9 - Medium - CCI-000162 - V-230401 - SV-230401r627750_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
RHEL-08-030120
Vuln IDs
  • V-230401
Rule IDs
  • SV-230401r627750_rule
Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 system activity. Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029
Checks: C-33070r567949_chk

Verify the audit log directories have a mode of "0700" or less permissive by first determining where the audit logs are stored with the following command: $ sudo grep -iw log_file /etc/audit/auditd.conf log_file = /var/log/audit/audit.log Using the location of the audit log, determine the directory where the audit logs are stored (ex: "/var/log/audit"). Run the following command to determine the permissions for the audit log folder: $ sudo stat -c "%a %n" /var/log/audit 700 /var/log/audit If the audit log directory has a mode more permissive than "0700", this is a finding.

Fix: F-33045r567950_fix

Configure the audit log directory to be protected from unauthorized read access by setting the correct permissive mode with the following command: $ sudo chmod 0700 [audit_log_directory] Replace "[audit_log_directory]" to the correct audit log directory path, by default this location is "/var/log/audit".

b
RHEL 8 audit system must protect auditing rules from unauthorized change.
AU-9 - Medium - CCI-000162 - V-230402 - SV-230402r627750_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
RHEL-08-030121
Vuln IDs
  • V-230402
Rule IDs
  • SV-230402r627750_rule
Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 system activity. In 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. Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029
Checks: C-33071r567952_chk

Verify the audit system prevents unauthorized changes with the following command: $ sudo grep "^\s*[^#]" /etc/audit/audit.rules | tail -1 -e 2 If the audit system is not set to be immutable by adding the "-e 2" option to the "/etc/audit/audit.rules", this is a finding.

Fix: F-33046r567953_fix

Configure the audit system to set the audit rules to be immutable by adding the following line to "/etc/audit/rules.d/audit.rules" -e 2 Note: Once set, the system must be rebooted for auditing to be changed. It is recommended to add this option as the last step in securing the system.

b
RHEL 8 audit system must protect logon UIDs from unauthorized change.
AU-9 - Medium - CCI-000162 - V-230403 - SV-230403r627750_rule
RMF Control
AU-9
Severity
Medium
CCI
CCI-000162
Version
RHEL-08-030122
Vuln IDs
  • V-230403
Rule IDs
  • SV-230403r627750_rule
Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 system activity. In 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. Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029
Checks: C-33072r567955_chk

Verify the audit system prevents unauthorized changes to logon UIDs with the following command: $ sudo grep -i immutable /etc/audit/audit.rules --loginuid-immutable If the login UIDs are not set to be immutable by adding the "--loginuid-immutable" option to the "/etc/audit/audit.rules", this is a finding.

Fix: F-33047r567956_fix

Configure the audit system to set the logon UIDs to be immutable by adding the following line to "/etc/audit/rules.d/audit.rules" --loginuid-immutable

b
RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/shadow.
AU-12 - Medium - CCI-000169 - V-230404 - SV-230404r627750_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000169
Version
RHEL-08-030130
Vuln IDs
  • V-230404
Rule IDs
  • SV-230404r627750_rule
Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. Audit records can be generated from various components within the information system (e.g., module or policy filter). Satisfies: SRG-OS-000062-GPOS-00031, 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-000304-GPOS-00121, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221
Checks: C-33073r567958_chk

Verify RHEL 8 generates audit records for all account creations, modifications, disabling, and termination events that affect "/etc/shadow". Check the auditing rules in "/etc/audit/audit.rules" with the following command: $ sudo grep /etc/shadow /etc/audit/audit.rules -w /etc/shadow -p wa -k identity If the command does not return a line, or the line is commented out, this is a finding.

Fix: F-33048r567959_fix

Configure RHEL 8 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/shadow". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -w /etc/shadow -p wa -k identity The audit daemon must be restarted for the changes to take effect.

b
RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/security/opasswd.
AU-12 - Medium - CCI-000169 - V-230405 - SV-230405r627750_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000169
Version
RHEL-08-030140
Vuln IDs
  • V-230405
Rule IDs
  • SV-230405r627750_rule
Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. Audit records can be generated from various components within the information system (e.g., module or policy filter). Satisfies: SRG-OS-000062-GPOS-00031, 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-000304-GPOS-00121, SRG-OS-000476-GPOS-00221
Checks: C-33074r567961_chk

Verify RHEL 8 generates audit records for all account creations, modifications, disabling, and termination events that affect "/etc/security/opasswd". Check the auditing rules in "/etc/audit/audit.rules" with the following command: $ sudo grep /etc/security/opasswd /etc/audit/audit.rules -w /etc/security/opasswd -p wa -k identity If the command does not return a line, or the line is commented out, this is a finding.

Fix: F-33049r567962_fix

Configure RHEL 8 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/security/opasswd". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -w /etc/security/opasswd -p wa -k identity The audit daemon must be restarted for the changes to take effect.

b
RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/passwd.
AU-12 - Medium - CCI-000169 - V-230406 - SV-230406r627750_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000169
Version
RHEL-08-030150
Vuln IDs
  • V-230406
Rule IDs
  • SV-230406r627750_rule
Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. Audit records can be generated from various components within the information system (e.g., module or policy filter). Satisfies: SRG-OS-000062-GPOS-00031, 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-000304-GPOS-00121, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221
Checks: C-33075r567964_chk

Verify RHEL 8 generates audit records for all account creations, modifications, disabling, and termination events that affect "/etc/passwd". Check the auditing rules in "/etc/audit/audit.rules" with the following command: $ sudo grep /etc/passwd /etc/audit/audit.rules -w /etc/passwd -p wa -k identity If the command does not return a line, or the line is commented out, this is a finding.

Fix: F-33050r567965_fix

Configure RHEL 8 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/passwd". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -w /etc/passwd -p wa -k identity The audit daemon must be restarted for the changes to take effect.

b
RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/gshadow.
AU-12 - Medium - CCI-000169 - V-230407 - SV-230407r627750_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000169
Version
RHEL-08-030160
Vuln IDs
  • V-230407
Rule IDs
  • SV-230407r627750_rule
Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. Audit records can be generated from various components within the information system (e.g., module or policy filter). Satisfies: SRG-OS-000062-GPOS-00031, 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-000304-GPOS-00121, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221
Checks: C-33076r567967_chk

Verify RHEL 8 generates audit records for all account creations, modifications, disabling, and termination events that affect "/etc/gshadow". Check the auditing rules in "/etc/audit/audit.rules" with the following command: $ sudo grep /etc/gshadow /etc/audit/audit.rules -w /etc/gshadow -p wa -k identity If the command does not return a line, or the line is commented out, this is a finding.

Fix: F-33051r567968_fix

Configure RHEL 8 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/gshadow". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -w /etc/gshadow -p wa -k identity The audit daemon must be restarted for the changes to take effect.

b
RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/group.
AU-12 - Medium - CCI-000169 - V-230408 - SV-230408r627750_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000169
Version
RHEL-08-030170
Vuln IDs
  • V-230408
Rule IDs
  • SV-230408r627750_rule
Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. Audit records can be generated from various components within the information system (e.g., module or policy filter). Satisfies: SRG-OS-000062-GPOS-00031, 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-000304-GPOS-00121, CCI-002884, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221
Checks: C-33077r567970_chk

Verify RHEL 8 generates audit records for all account creations, modifications, disabling, and termination events that affect "/etc/group". Check the auditing rules in "/etc/audit/audit.rules" with the following command: $ sudo grep /etc/group /etc/audit/audit.rules -w /etc/group -p wa -k identity If the command does not return a line, or the line is commented out, this is a finding.

Fix: F-33052r567971_fix

Configure RHEL 8 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/group". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -w /etc/group -p wa -k identity The audit daemon must be restarted for the changes to take effect.

b
RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/sudoers.
AU-12 - Medium - CCI-000169 - V-230409 - SV-230409r627750_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000169
Version
RHEL-08-030171
Vuln IDs
  • V-230409
Rule IDs
  • SV-230409r627750_rule
Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. Audit records can be generated from various components within the information system (e.g., module or policy filter). Satisfies: SRG-OS-000062-GPOS-00031, 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-000304-GPOS-00121, CCI-002884, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221
Checks: C-33078r567973_chk

Verify RHEL 8 generates audit records for all account creations, modifications, disabling, and termination events that affect "/etc/sudoers". Check the auditing rules in "/etc/audit/audit.rules" with the following command: $ sudo grep /etc/sudoers /etc/audit/audit.rules -w /etc/sudoers -p wa -k identity If the command does not return a line, or the line is commented out, this is a finding.

Fix: F-33053r567974_fix

Configure RHEL 8 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/sudoers". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -w /etc/sudoers -p wa -k identity The audit daemon must be restarted for the changes to take effect.

b
RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/sudoers.d/.
AU-12 - Medium - CCI-000169 - V-230410 - SV-230410r627750_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000169
Version
RHEL-08-030172
Vuln IDs
  • V-230410
Rule IDs
  • SV-230410r627750_rule
Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. Audit records can be generated from various components within the information system (e.g., module or policy filter). Satisfies: SRG-OS-000062-GPOS-00031, 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-000304-GPOS-00121, CCI-002884, SRG-OS-000466-GPOS-00210, SRG-OS-000476-GPOS-00221
Checks: C-33079r567976_chk

Verify RHEL 8 generates audit records for all account creations, modifications, disabling, and termination events that affect "/etc/sudoers.d/". Check the auditing rules in "/etc/audit/audit.rules" with the following command: $ sudo grep /etc/sudoers.d/ /etc/audit/audit.rules -w /etc/sudoers.d/ -p wa -k identity If the command does not return a line, or the line is commented out, this is a finding.

Fix: F-33054r567977_fix

Configure RHEL 8 to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/sudoers.d/". Add or update the following file system rule to "/etc/audit/rules.d/audit.rules": -w /etc/sudoers.d/ -p wa -k identity The audit daemon must be restarted for the changes to take effect.

b
The RHEL 8 audit package must be installed.
AU-12 - Medium - CCI-000169 - V-230411 - SV-230411r744000_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000169
Version
RHEL-08-030180
Vuln IDs
  • V-230411
Rule IDs
  • SV-230411r744000_rule
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. Audit 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. Associating event types with detected events in RHEL 8 audit logs provides a means of investigating an attack, recognizing resource utilization or capacity thresholds, or identifying an improperly configured RHEL 8 system. Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000038-GPOS-00016, SRG-OS-000039-GPOS-00017, SRG-OS-000040-GPOS-00018, SRG-OS-000041-GPOS-00019, SRG-OS-000042-GPOS-00021, SRG-OS-000051-GPOS-00024, SRG-OS-000054-GPOS-00025, SRG-OS-000122-GPOS-00063, SRG-OS-000254-GPOS-00095, SRG-OS-000255-GPOS-00096, SRG-OS-000337-GPOS-00129, SRG-OS-000348-GPOS-00136, SRG-OS-000349-GPOS-00137, SRG-OS-000350-GPOS-00138, SRG-OS-000351-GPOS-00139, SRG-OS-000352-GPOS-00140, SRG-OS-000353-GPOS-00141, SRG-OS-000354-GPOS-00142, SRG-OS-000358-GPOS-00145, SRG-OS-000365-GPOS-00152, SRG-OS-000392-GPOS-00172, SRG-OS-000475-GPOS-00220
Checks: C-33080r743999_chk

Verify the audit service is configured to produce audit records. Check that the audit service is installed with the following command: $ sudo yum list installed audit If the "audit" package is not installed, this is a finding.

Fix: F-33055r646880_fix

Configure the audit service to produce audit records containing the information needed to establish when (date and time) an event occurred. Install the audit service (if the audit service is not already installed) with the following command: $ sudo yum install audit

b
Successful/unsuccessful uses of the su command in RHEL 8 must generate an audit record.
AU-12 - Medium - CCI-000169 - V-230412 - SV-230412r627750_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000169
Version
RHEL-08-030190
Vuln IDs
  • V-230412
Rule IDs
  • SV-230412r627750_rule
Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. Audit records can be generated from various components within the information system (e.g., module or policy filter). The "su" command allows a user to run commands with a substitute user and group ID. When a user logs on, the AUID is set to the UID of the account that is being authenticated. Daemons are not user sessions and have the loginuid set to "-1". The AUID representation is an unsigned 32-bit integer, which equals "4294967295". The audit system interprets "-1", "4294967295", and "unset" in the same way. Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000064-GPOS-0003, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210
Checks: C-33081r567982_chk

Verify RHEL 8 generates audit records when successful/unsuccessful attempts to use the "su" command by performing the following command to check the file system rules in "/etc/audit/audit.rules": $ sudo grep -w /usr/bin/su /etc/audit/audit.rules -a always,exit -F path=/usr/bin/su -F perm=x -F auid&gt;=1000 -F auid!=unset -k privileged-priv_change If the command does not return a line, or the line is commented out, this is a finding.

Fix: F-33056r567983_fix

Configure RHEL 8 to generate audit records when successful/unsuccessful attempts to use the "su" command occur by adding or updating the following rule in "/etc/audit/rules.d/audit.rules": -a always,exit -F path=/usr/bin/su -F perm=x -F auid>=1000 -F auid!=unset -k privileged-priv_change The audit daemon must be restarted for the changes to take effect.

b
The RHEL 8 audit system must be configured to audit any usage of the setxattr, fsetxattr, lsetxattr, removexattr, fremovexattr, and lremovexattr system calls.
AU-12 - Medium - CCI-000169 - V-230413 - SV-230413r810463_rule
RMF Control
AU-12
Severity
Medium
CCI
CCI-000169
Version
RHEL-08-030200
Vuln IDs
  • V-230413
Rule IDs
  • SV-230413r810463_rule
Without generating audit records that are specific to the security and mission needs of the organization, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. Audit records can be generated from various components within the information system (e.g., module or policy filter). "Setxattr" is a system call used to set an extended attribute value. "Fsetxattr" is a system call used to set an extended attribute value. This is used to set extended attributes on a file. "Lsetxattr" is a system call used to set an extended attribute value. This is used to set extended attributes on a symbolic link. "Removexattr" is a system call that removes extended attributes. "Fremovexattr" is a system call that removes extended attributes. This is used for removal of extended attributes from a fil